ARA ROOT Test BEd Software

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 doxygen 1.4.7