#ifndef __EEsmdCalibration_h__ #define __EEsmdCalibration_h__ #include class TH1F; class TH2F; class TProfile; class TProfile2D; class EEezAnalysis; class EEezClAnalysis; class EEsmdProfile; class EEmcDb; class EEezCluster; class EEsmdCalibration : public TDirectory { public: EEsmdCalibration ( const Char_t *name, const Char_t *title = "EEMC strip-to-strip relative calibrations" ); ~EEsmdCalibration() { /* nada */ }; Int_t Init(); Int_t Make(); void Clear(); void setDb ( EEmcDb *db ) { m_EEmcDbase = db; } void setAnalysis( EEezAnalysis *a ) { m_EEezAnaly = a; } void setClusterFinder ( EEezClAnalysis *a ) { m_EEezClust = a; } void setClusterProfiler ( EEsmdProfile *p ) { m_EEsmdProf = p; } void setNSigma( Float_t s ) { m_NSigma = s; } void setMinYield ( Float_t y ) { m_YieldMin = y; } void newDb(Int_t sectorMin=0, Int_t sectorMax=11); void newDbRatio( Int_t sectorMin = 0, Int_t sectorMax = 11 ); void setMaxShift( Float_t ms ) { m_MaxShift = 0.5; } void scaleGains( Float_t scale, Int_t ifirst, Int_t jlast ); void kludgeGains(); private: protected: // Int_t isolationCut( EEezCluster *cluster ); Int_t isolationCut( Int_t ic ); Int_t fitQAcut( Int_t icluster, Int_t iuv ); Int_t profileQAcut( Int_t icluster, Int_t iuv ); EEezAnalysis *m_EEezAnaly; EEezClAnalysis *m_EEezClust; EEsmdProfile *m_EEsmdProf; EEmcDb *m_EEmcDbase; TProfile *m_GainShift[12][2]; TProfile *m_CrossCalib[12][2]; TH1F *m_SumMips[12][2]; TH1F *m_SumHits[12][2]; TProfile *m_MeanMips[12][2]; TH2F *m_Chi2VsStrip; // Chi^2 versus strip ID (all planes) TH2F *m_Chi2VsEclust; // Chi^2 versus cluster energy TProfile *m_YieldVsEclust; // fit MIP yield vs cluster energy TProfile *m_SigmaVsEclust; // fit width vs cluster energy TProfile *m_FracVsEclust; // fraction of 2nd gaussian vs cluster energy TH2F *m_Chi2VsShape; // Chi^2 versus (eSeed/eCluster) TH1F *m_CutEvents; // Reason why each event was cut // Distribution of residuals for specific strips (4 groups // of three adjacent strips). TH1F *m_Residuals[12][288]; TH1F *m_YieldToFit[12][2][288]; TProfile *m_ResidualsVsEclust[12]; // mean residuals versus energy TProfile *m_ResidualsVsChi2[12]; // residuals vs chi2 of the fit TProfile *m_ResidualsVsDist[12]; // ... vs distance from mean Int_t m_SelectStrips[12]; Int_t m_SelectStripMap[288]; TH1F *m_NDF; // fit degrees of freedom TH1F *m_NumClusters; /* //-- */ /* //-- Event topology, before and after different cut points */ /* //-- */ /* void InitCutPoints(); */ /* void FillCutPoint( Int_t clust, Int_t point ); */ /* TDirectory *m_CutPoints[4]; */ /* TH1F *m_dNdEta[4]; */ /* TH1F *m_dNdEnergy[4]; */ /* TH1F *m_dNdPhi[4]; */ /* TH2F *m_XY[4]; */ /* TH1F *m_NumHitStrips[12][2][4]; */ /* TH1F *m_NumMipStrips[12][2][4]; */ Float_t m_NSigma; Float_t m_YieldMin; Float_t m_MaxShift; ClassDef(EEsmdCalibration,1); }; #endif