Newer
Older
#ifndef ROOT_THcAerogel
#define ROOT_THcAerogel
///////////////////////////////////////////////////////////////////////////////
// //
// //
///////////////////////////////////////////////////////////////////////////////
#include "TClonesArray.h"
#include "THaNonTrackingDetector.h"
#include "THcHitList.h"
#include "THcAerogelHit.h"
class THcAerogel : public THaNonTrackingDetector, public THcHitList {
THcAerogel(const char* name, const char* description = "", THaApparatus* a = NULL);
virtual ~THcAerogel();
virtual void Clear(Option_t* opt="");
virtual void Print(const Option_t* opt) const;
virtual void AccumulatePedestals(TClonesArray* rawhits);
virtual void CalculatePedestals();
virtual Int_t Decode(const THaEvData&);
virtual Int_t ReadDatabase(const TDatime& date);
virtual Int_t DefineVariables(EMode mode = kDefine);
virtual Int_t CoarseProcess(TClonesArray& tracks);
virtual Int_t FineProcess(TClonesArray& tracks);
virtual Int_t ApplyCorrections(void);
virtual EStatus Init(const TDatime& run_time);
void InitArrays();
void DeleteArrays();
Int_t GetIndex(Int_t nRegion, Int_t nValue);
THcAerogel(); // for ROOT I/O
// Event information
Int_t fNhits;
// 12 GeV variables
// Vector/TClonesArray length parameters
static const Int_t MaxNumAdcPulse = 4;
// Tracking variables
Int_t fNRegions;
Int_t fRegionsValueMax;
Int_t fDebugAdc;
Double_t fRedChi2Min;
Double_t fRedChi2Max;
Double_t fBetaMin;
Double_t fBetaMax;
Double_t fENormMin;
Double_t fENormMax;
Double_t fDiffBoxZPos;
Double_t fNpeThresh;
Double_t fAdcTimeWindowMin;
Double_t fAdcTimeWindowMax;
Double_t *fRegionValue;
// Counting variables
Int_t fTotNumAdcHits;
Int_t fTotNumGoodAdcHits;
Int_t fTotNumPosAdcHits;
Int_t fTotNumGoodPosAdcHits;
Int_t fTotNumNegAdcHits;
Int_t fTotNumGoodNegAdcHits;
Int_t fTotNumTracksMatched;
Int_t fTotNumTracksFired;
// NPE variables
Double_t fPosNpeSum;
Double_t fNegNpeSum;
Double_t fNpeSum;
Double_t *fPosGain;
Double_t *fNegGain;
// FADC data objects
TClonesArray* frPosAdcPedRaw;
TClonesArray* frPosAdcPulseIntRaw;
TClonesArray* frPosAdcPulseAmpRaw;
TClonesArray* frPosAdcPulseTimeRaw;
TClonesArray* frPosAdcPed;
TClonesArray* frPosAdcPulseInt;
TClonesArray* frPosAdcPulseAmp;
TClonesArray* frNegAdcPedRaw;
TClonesArray* frNegAdcPulseIntRaw;
TClonesArray* frNegAdcPulseAmpRaw;
TClonesArray* frNegAdcPulseTimeRaw;
TClonesArray* frNegAdcPed;
TClonesArray* frNegAdcPulseInt;
TClonesArray* frNegAdcPulseAmp;
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
TClonesArray* fPosAdcErrorFlag;
TClonesArray* fNegAdcErrorFlag;
// Individual PMT data objects
vector<Int_t> fNumPosAdcHits;
vector<Int_t> fNumNegAdcHits;
vector<Int_t> fNumGoodPosAdcHits;
vector<Int_t> fNumGoodNegAdcHits;
vector<Int_t> fNumTracksMatched;
vector<Int_t> fNumTracksFired;
vector<Double_t> fPosNpe;
vector<Double_t> fNegNpe;
vector<Double_t> fGoodPosAdcPed;
vector<Double_t> fGoodPosAdcPulseInt;
vector<Double_t> fGoodPosAdcPulseIntRaw;
vector<Double_t> fGoodPosAdcPulseAmp;
vector<Double_t> fGoodPosAdcPulseTime;
vector<Double_t> fGoodNegAdcPed;
vector<Double_t> fGoodNegAdcPulseInt;
vector<Double_t> fGoodNegAdcPulseIntRaw;
vector<Double_t> fGoodNegAdcPulseAmp;
vector<Double_t> fGoodNegAdcPulseTime;
// 6 GeV era variables
Int_t fAnalyzePedestals;
Int_t fSixGevData;
Int_t fNGoodHits;
Int_t fNADCPosHits;
Int_t fNADCNegHits;
Int_t fNTDCPosHits;
Int_t fNTDCNegHits;
Int_t fTdcOffset; /* Global TDC offset */
Int_t fNPedestalEvents;
Int_t fMinPeds;
Double_t fPosNpeSumSixGev;
Double_t fNegNpeSumSixGev;
Double_t fNpeSumSixGev;
Int_t *fPosPedSum; /* Accumulators for pedestals */
Int_t *fPosPedSum2;
Int_t *fPosPedLimit;
Int_t *fPosPedCount;
Int_t *fNegPedSum;
Int_t *fNegPedSum2;
Int_t *fNegPedLimit;
Int_t *fNegPedCount;
Float_t *fA_Pos; // [fNelem] Array of ADC amplitudes
Float_t *fA_Neg; // [fNelem] Array of ADC amplitudes
Float_t *fA_Pos_p; // [fNelem] Array of ped-subtracted ADC amplitudes
Float_t *fA_Neg_p; // [fNelem] Array of ped-subtracted ADC amplitudes
Float_t *fT_Pos; // [fNelem] Array of TDCs
Float_t *fT_Neg; // [fNelem] Array of TDCs
Double_t *fPosPed;
Double_t *fPosSig;
Double_t *fPosThresh;
Double_t *fNegPed;
Double_t *fNegSig;
Double_t *fNegThresh;
Double_t *fPosPedMean; /* Can be supplied in parameters and then */
Double_t *fNegPedMean; /* be overwritten from ped analysis */
TClonesArray *fPosTDCHits;
TClonesArray *fNegTDCHits;
TClonesArray *fPosADCHits;
TClonesArray *fNegADCHits;
vector<Double_t> fPosNpeSixGev;
vector<Double_t> fNegNpeSixGev;
void Setup(const char* name, const char* description);
virtual void InitializePedestals( );
ClassDef(THcAerogel,0) // Generic aerogel class