// -*- mode: c++ -*- // // $Id: BrMultCalibration.h,v 1.7 2001/12/06 00:32:22 sanders Exp $ // $Author: sanders $ // $Date: 2001/12/06 00:32:22 $ // $Copyright: (C) 2001 BRAHMS Collaboration // #ifndef BRAT_BrMultCalibration #define BRAT_BrMultCalibration #ifndef BRAT_BrCalibration #include "BrCalibration.h" #endif #ifdef BR_MULT_CAL_TMP #undef BR_MULT_CAL_TMP #endif #define BR_MULT_CAL_TMP class BrMultCalibration : public BrCalibration { protected: BrCalibrationData fPedestal; // Pedestal of ADCs BrCalibrationData fPedestalWidth; // Pedestal width of ADCs BrCalibrationData fAdcGain; // Gain of ADCs BrCalibrationData fConversionFunc; // eta dep. conversion from E to N BrCalibrationData fCorrectionFunc; // vtx dep. correction for secondaires BrCalibrationData fCentralityFunc; // Centrality cut functions (BAN22) // These are geometry things proper, but put here for now, until a // concensus of how to do the geometry database. BrCalibrationData fRingMap; // ADC ch. no. to ring map BrCalibrationData fRowMap; // ADC ch. no. to row map BrCalibrationData fRingPosition; // Z coordinate of center of rings BrCalibrationData fTilt; // Tilt of individual elements Float_t fRingRadius; // Double_t fRingDetectorFront; // front surface distance Double_t fRingDetectorDepth; // thickness of detector Double_t fRingDetectorWidth; // width of detector Double_t fRingDetectorHeight; // height of detecotr public: BrMultCalibration(); BrMultCalibration(const Char_t* name, const Char_t* title); // ADC calibration virtual Float_t GetPedestal(Int_t tileNo) const; virtual Float_t GetPedestalWidth(Int_t tileNo) const; virtual Short_t GetAdcGap(Int_t tileNo) const { return 0; } virtual Float_t GetAdcGain(Int_t tileNo) const; // For the pulser calibration virtual Int_t GetPulserFuncOrder() const { return 1; } virtual Float_t GetPulserFuncPar(Int_t stripNo, Int_t parno) const { return (parno == 1 ? 1 : 0); } // For the eta correction function virtual Int_t GetConversionFuncOrder() const; virtual Float_t GetConversionFuncPar(Int_t ringNo, Int_t parno) const; // For the centrality cuts virtual Int_t GetCorrectionFuncOrder() const; virtual Float_t GetCorrectionFuncCut() const; virtual Float_t GetCorrectionFuncPar(Int_t parno) const; // For the centrality cuts virtual Int_t GetCentralityFuncOrder() const; virtual Int_t GetNCentralityFunc() const; virtual Float_t GetCentralityFuncCut(Int_t) const; virtual Float_t GetCentralityFuncPar(Int_t, Int_t) const; // Geometry - shoud be in geometry database virtual Short_t GetRingMap(Int_t tileNo) const; virtual Short_t GetRowMap(Int_t tileNo) const; virtual Float_t GetRingPosition(Int_t ringNo) const; virtual Float_t GetRingRadius(Int_t) const { return fRingRadius; } virtual Double_t GetRingDetectorFront() const {return fRingDetectorFront;} virtual Double_t GetRingDetectorDepth() const {return fRingDetectorDepth;} virtual Double_t GetRingDetectorWidth() const {return fRingDetectorWidth;} virtual Double_t GetRingDetectorHeight() const {return fRingDetectorHeight;} virtual Float_t GetTilt(Int_t tileNo) const; // ADC calibration virtual void SetPedestal(Int_t tileNo, Float_t ped); virtual void SetPedestalWidth(Int_t tileNo, Float_t width); virtual void SetAdcGap(Int_t tileNo, Short_t gap) {} virtual void SetAdcGain(Int_t tileNo, Float_t gain); // For the pulser calibration virtual void SetPulserFuncOrder(Int_t order) {} virtual void SetPulserFunc(Int_t stripNo, Float_t*) {} // For the eta correction function virtual void SetConversionFuncOrder(Int_t o); virtual void SetConversionFunc(Int_t ringNo, Float_t*); // For the vtx correction function virtual void SetCorrectionFunc(Int_t o, Float_t cut, Float_t*); // For the centrality cuts virtual void SetNCentralityFunc(Int_t n); virtual void SetCentralityFuncOrder(Int_t o); virtual void SetCentralityFunc(Int_t, Float_t, Float_t*); // Geometry - shoud be in geometry database virtual void SetRingMap(Int_t tileNo, Short_t map); virtual void SetRowMap(Int_t tileNo, Short_t map); virtual void SetRingPosition(Int_t ringNo, Float_t pos); virtual void SetRingRadius(Int_t, Float_t r) { fRingRadius = r; } virtual void SetTilt(Int_t tileNo, Float_t ped); ClassDef(BrMultCalibration,0) // ABC for SMA/TMA calibrations }; #ifdef BR_MULT_CAL_TMP class BrMultTmpCalibration : public TNamed { protected: Int_t fConversionOrder; // eta dep. conversion from E to N Int_t fCorrectionOrder; // vtx dep. conversion from N' to N Float_t fCorrectionCut; // vtx dep. conversion from N' to N Int_t fCentralityOrder; // Centrality cut functions (BAN22) Int_t fCentralityN; // Centrality cut functions (BAN22) // These are geometry things proper, but put here for now, until a // concensus of how to do the geometry database. Float_t fRingRadius; // Double_t fRingDetectorFront; // front surface distance Double_t fRingDetectorDepth; // thickness of detector Double_t fRingDetectorWidth; // width of detector Double_t fRingDetectorHeight; // height of detecotr Int_t fDebugLevel; public: BrMultTmpCalibration(); BrMultTmpCalibration(const Char_t* name, const Char_t* title); ~BrMultTmpCalibration(); // Various "special" methods virtual void Clear() = 0; virtual void Defaults() = 0; virtual void ReadASCIIFile(Int_t runno) = 0; virtual Int_t DebugLevel() const { return fDebugLevel; } virtual void SetDebugLevel(Int_t lvl) { fDebugLevel = lvl; } // ADC calibration virtual Float_t GetPedestal(Int_t tileNo) const = 0; virtual Float_t GetPedestalWidth(Int_t tileNo) const = 0; virtual Int_t GetAdcGap(Int_t tileNo) const { return 0; }; virtual Float_t GetAdcGain(Int_t tileNo) const = 0; // For the pulser calibration virtual Int_t GetPulserFuncOrder() const { return 1; } virtual Float_t GetPulserFuncPar(Int_t stripNo, Int_t parno) const { return (parno == 1 ? 1 : 0); } // For the eta correction function virtual Int_t GetConversionFuncOrder() const; virtual Float_t GetConversionFuncPar(Int_t ringNo, Int_t parno) const = 0; virtual Double_t GetEffFunc(Int_t ring, Int_t parno){return 1.;} virtual Double_t GetEtaFunc(Int_t ring, Int_t parno){return 1.;} // For the centrality cuts virtual Int_t GetCorrectionFuncOrder() const; virtual Float_t GetCorrectionFuncCut() const; virtual Float_t GetCorrectionFuncPar(Int_t parno) const = 0; // For the centrality cuts virtual Int_t GetCentralityFuncOrder() const; virtual Int_t GetNCentralityFunc() const; virtual Float_t GetCentralityFuncCut(Int_t) const = 0; virtual Float_t GetCentralityFuncPar(Int_t, Int_t) const = 0; // Geometry - shoud be in geometry database virtual Short_t GetRingMap(Int_t tileNo) const = 0; virtual Short_t GetRowMap(Int_t tileNo) const = 0; virtual Float_t GetRingPosition(Int_t ringNo) const = 0; virtual Float_t GetRingRadius(Int_t) const { return fRingRadius; } virtual Double_t GetRingDetectorFront() const {return fRingDetectorFront;} virtual Double_t GetRingDetectorDepth() const {return fRingDetectorDepth;} virtual Double_t GetRingDetectorWidth() const {return fRingDetectorWidth;} virtual Double_t GetRingDetectorHeight() const {return fRingDetectorHeight;} virtual Float_t GetTilt(Int_t tileNo) const = 0; virtual Int_t GetRingCnt(Int_t ring) const {return 1;} // Dummy virtual void Use(const char*) {} virtual void Print(Option_t* option="") const {}; ClassDef(BrMultTmpCalibration, 0) // ABC temporary TMA/SMA calibration } ; #endif #endif //____________________________________________________________________ // // $Log: BrMultCalibration.h,v $ // Revision 1.7 2001/12/06 00:32:22 sanders // Fixed calibrations to obtain average pseudorapidity and geometric // scaling factor for si and tile elements. // // Revision 1.6 2001/11/24 15:42:55 sanders // Added si and tile calibrations for: // 1) converting from detector multiplicities to ring dNdEta values // 2) finding the HIJING weighted ring eta value for a given vertex position // Both of these calibrations were found doing 8th order polynomial fits // to functions obtained by taking HIJING particle distributions starting // from vertex locations between -46cm and +46 cm, in 2 cm steps, and // checking if the corresponding particles "hit" any of the si or tile // detectors in the array. // // Revision 1.5 2001/10/08 10:27:08 cholm // Changed detector calibration data classes to derive from BrCalibration, // rather than BrParameterElement, since that has been replaced. Impact // on various modules, and so on. Some user code may need to be changed to. // // Revision 1.4 2001/09/26 02:36:23 sanders // Modified to allow TmpCalibration // // Revision 1.3 2001/09/20 13:10:34 cholm // Various fixes // // Revision 1.2 2001/09/12 15:05:34 cholm // Varius fixes that was needed for the thing to work properly. Mistakes on // my part. Stupid ones too. // // Revision 1.1.1.1 2001/06/21 14:54:59 hagel // Initial revision of brat2 // // Revision 1.1 2001/05/31 01:44:20 cholm // Second rewamp of this directory. All RDO modules use the common // BrMultRdoModule, and they both write BrMultRdo Objects. Also introduced // ABC for Br[Tile|Si][Parameters|Calibration] since they have a lot in common, // and the code can be made more efficient this way. // // A possible further thing to do, is to make an ABC for the CentModules, and // the corresponding calibration modules, since they are very VERY similar. // However, the current module BrMultCentModule is in the way. Need to talk // to Steve about that. // //