PbScSuperModule.h

Go to the documentation of this file.
00001 #ifndef __PBSCSUPERMODULE_H__
00002 #define __PBSCSUPERMODULE_H__
00003 
00010 //  ROOT Classes
00011 
00012 #include <Rtypes.h>
00013 
00014 #ifndef __EMCSUPERMODULE_H__
00015 #include "EmcSuperModule.h"
00016 #endif
00017 
00019 #define  PMTWordsPerTower     36            
00020 
00022 struct DB902{
00024          int       PMTBarCode;
00026          int       Replaced;
00028          Float_t   GainModFactor;
00030          Float_t   GQE1kV;
00032          Float_t   Slope;
00034          Float_t   Data[PMTWordsPerTower];
00035  };
00162 class PbScSuperModule: public EmcSuperModule
00163 {
00164  private:
00165   int SMProductionId;
00166   struct {
00167     struct {
00168       Float_t Hamamatsu;
00169       Float_t RmsHamamatsu;
00170       Float_t HamamatsuPed;
00171       Float_t RmsHamamatsuPed;
00172       Float_t ExtSPD;
00173       Float_t RmsExtSPD;
00174       Float_t ExtSPDPed;
00175       Float_t RmsExtSPDPed;
00176       Float_t ExtSPDTP;
00177       Float_t RmsExtSPDTP;
00178       Float_t IntSPD;
00179       Float_t RmsIntSPD;
00180       Float_t IntSPDPed;
00181       Float_t RmsIntSPDPed;
00182       Float_t IntSPDTP;
00183       Float_t RmsIntSPDTP;
00184             } Ref902;
00185     struct {
00186       int TowerId;
00187       int PMT902;
00188       Float_t        hv902;
00189       Float_t        PredictedGainQE;
00190       Float_t        MuPeak;
00191       Float_t        LaserRaw;
00192       Float_t        LaserPhelRaw;
00193       Float_t        LaserPhelNorm;
00194       Float_t        MeasuredGain;
00195       Float_t        ScrLightYield;
00196       Float_t        ScrPhelYield;
00197       Float_t        EstLightYield;
00198       Float_t        EstPhelYield;      
00199       Float_t        VGA;  
00200     } Tower[144];
00201   } Data902;
00202 
00203   DB902 * NewData; 
00204 
00205  public:
00206 
00207   PbScSuperModule(int &);
00208   ~PbScSuperModule();
00209 
00211         bool            LoadSMData();
00213         inline  int     getProductionId(){return SMProductionId;}
00215   inline  Float_t getScrLightYield(int & Twr) {return Data902.Tower[Twr].ScrLightYield;}
00217         inline  Float_t getMuPeak(int & Twr) {return Data902.Tower[Twr].MuPeak;}
00219         inline  Float_t getLaserRaw(int & Twr) {return Data902.Tower[Twr].LaserRaw;}
00221         inline  Float_t getIntSPD() {return Data902.Ref902.IntSPD;}
00223         inline  Float_t getIntSPDTP() {return Data902.Ref902.IntSPDTP;}
00225         inline  void    setVGA(int Twr, Float_t Value){Data902.Tower[Twr].VGA=Value;}
00227         inline  Float_t getVGA(int Twr){return Data902.Tower[Twr].VGA;}
00229         Float_t         getNewHV(int HVGroup, Float_t ERange, Float_t & HVIncrement, Float_t QRange=640., Float_t VGACentral=1.7, Float_t VGAScale=1.);
00231         virtual void  getNewVGA(int , Float_t , Float_t *, Float_t *);
00233         virtual void  buildDataBase902();
00235         virtual void  LoadDataBase902(int , Float_t *);
00237         virtual Float_t getNewData(int iTwr, int iWord);
00239         virtual inline int   getPMTBarCode(int Twr){return ((NewData)? NewData[Twr].PMTBarCode : 0);}
00241         virtual inline int   getReplacedPMTBarCode(int Twr){return ((NewData)? NewData[Twr].Replaced : 0);}
00243         virtual inline Float_t getGainModFactor(int Twr){return ((NewData)? NewData[Twr].GainModFactor : 0);}
00245         virtual inline Float_t getPMTSlope(int Twr){return ((NewData)? NewData[Twr].Slope : 0);}
00247         virtual inline Float_t getPMTGQE1kV(int Twr){return ((NewData)? NewData[Twr].GQE1kV : 0);}
00249   Float_t         getU0(int & ) {return 0.;}
00251   Float_t         getUT(int & ) {return 0.;}
00253    int   getLgcNumber(int & ) {return 0;} 
00255    float getAY(int & ) {return 0.;} 
00257    float getVY(int & ) {return 0.;} 
00259    float getBL(int & ) {return 0.;} 
00261    float getRS(int & ) {return 0.;} 
00263    float getAYPeak(int & ) {return 0.;} 
00265    float getAYRef(int & ) {return 0.;} 
00267    float getTestPeak(int & ) {return 0.;} 
00269    float getTestRef(int & ) {return 0.;} 
00271    float getGC(int & ) {return 0.;} 
00273    float getC0(int & ) {return 0.;} 
00275    float getG0(int & ) {return 0.;} 
00277    float getCF(int & ) {return 0.;} 
00278 };
00279 
00280 #endif
00281 
00282 
00283 
00284 
00285 
00286 
00287 
00288 
00289 
00290 
00291 
00292 
00293