AraEvent/AraEventCalibrator.h
00001 00002 00003 00004 00005 00006 00007 00008 00009 #ifndef ARAEVENTCALIBRATOR_H 00010 #define ARAEVENTCALIBRATOR_H 00011 00012 //Includes 00013 #include <TObject.h> 00014 #include "araStructures.h" 00015 #include "araDefines.h" 00016 00017 00018 #define ADCMV 0.939 /* mV/adc, per Gary's email of 05/04/2006 */ 00019 #define SATURATION 1300 00020 #define NSPERSAMP 0.95 00021 00022 00024 00028 namespace AraCalType { 00029 typedef enum EAraCalType { 00030 kNoCalib = 0x00, 00031 kJustUnwrap = 0x01, 00032 kADC = 0x02, 00033 kVoltageTime = 0x03, 00034 kJustPed = 0x04, 00035 kFirstCalib = 0x05, 00036 kFirstCalibPlusCables = 0x06, 00037 kSecondCalib = 0x07, 00038 kSecondCalibPlusCables = 0x08, 00039 kLatestCalib = 0x08 00040 } AraCalType_t; 00041 00042 Bool_t hasCableDelays(AraCalType::AraCalType_t calType); 00043 Bool_t hasBinWidthCalib(AraCalType::AraCalType_t calType); 00044 Bool_t hasInterleaveCalib(AraCalType::AraCalType_t calType); 00045 Bool_t hasClockAlignment(AraCalType::AraCalType_t calType); 00046 00047 } 00048 00049 class UsefulAraEvent; 00050 class TGraph; 00051 00053 00057 class AraEventCalibrator : public TObject 00058 { 00059 public: 00060 AraEventCalibrator(); 00061 ~AraEventCalibrator(); 00062 00063 //Instance generator 00064 static AraEventCalibrator* Instance(); 00065 00066 00067 void setPedFile(char fileName[]); 00068 void calibrateEvent(UsefulAraEvent *theEvent, AraCalType::AraCalType_t calType=AraCalType::kJustUnwrap); 00069 int doBinCalibration(UsefulAraEvent *theEvent, int chanIndex,int overrideRCO=-1); 00070 00071 void fillRCOGuessArray(UsefulAraEvent *theEvent, int rcoGuess[ACTIVE_CHIPS]); 00072 Double_t estimateClockPeriod(Int_t numPoints,Double_t &rms); 00073 00074 void calcClockAlignVals(UsefulAraEvent *theEvent, AraCalType::AraCalType_t calType); 00075 Double_t estimateClockLag(TGraph *grClock); 00076 00077 00078 00079 void loadPedestals(); 00080 void loadCalib(); 00081 int gotPedFile; 00082 char pedFile[FILENAME_MAX]; 00083 float pedestalData[ACTIVE_CHIPS][CHANNELS_PER_CHIP][MAX_NUMBER_SAMPLES]; 00084 double binWidths[ACTIVE_CHIPS][2][MAX_NUMBER_SAMPLES]; 00085 double epsilonVals[ACTIVE_CHIPS][2]; 00086 double interleaveVals[8]; 00087 double clockAlignVals[ACTIVE_CHIPS]; //Well by default clock align 0 is 0 00088 00089 00090 00092 double v[MAX_NUMBER_SAMPLES]; //Calibrated wrapped 00093 double calwv[MAX_NUMBER_SAMPLES]; //Calibrated unwrapped 00094 double rawadc[MAX_NUMBER_SAMPLES]; //Uncalibrated unwrapped 00095 double pedsubadc[MAX_NUMBER_SAMPLES]; //Pedestal subtracted unwrapped 00096 double sampNums[MAX_NUMBER_SAMPLES]; //Sample numbers as doubles 00097 double timeNums[MAX_NUMBER_SAMPLES]; 00098 double tempTimeNums[MAX_NUMBER_SAMPLES]; 00099 double calTimeNums[MAX_NUMBER_SAMPLES]; 00100 double calVoltNums[MAX_NUMBER_SAMPLES]; 00101 int indexNums[MAX_NUMBER_SAMPLES]; 00102 00103 00104 protected: 00105 static AraEventCalibrator *fgInstance; 00106 00107 ClassDef(AraEventCalibrator,1); 00108 00109 }; 00110 00111 00112 #endif //ARAEVENTCALIBRATOR_H
Generated on Wed Aug 8 16:18:55 2012 for ARA ROOT Test Bed Software by
