00001 #ifndef __PBSCSUPERMODULE_H__
00002 #define __PBSCSUPERMODULE_H__
00003
00010
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