Go to the documentation of this file.00001 #ifndef TRICHPROC_H
00002 #define TRICHPROC_H
00003
00004 #include "TRocProc.h"
00005 #include "TRICHEvent.h"
00006 #include "TTriglogEvent.h"
00007 #include "TBeamMonitorEvent.h"
00008 #include "TMbsCrateEvent.h"
00009 #include "TRICHParam.h"
00010 #include "TGo4Picture.h"
00011 #include "TH1.h"
00012 #include "TH2.h"
00013 #include "TGo4WinCond.h"
00014 #include "TGo4PolyCond.h"
00015 #include "TCBMBeamtimeProc.h"
00016 #include "MAPMT_Cell.h"
00017 #include "TEpicsEvent.h"
00018 #include "TFiberHodEvent.h"
00019
00020
00021 class CbmRichRingFitterCOP;
00022 class CbmRichRingFitterEllipseTau;
00023 class CbmRichRingFinderHoughImpl;
00024 class CbmRichRingLight;
00025 class CbmRichHitLight;
00026 class TEllipse;
00027 class TLatex;
00028
00029
00030 class TRICHProc : public TCBMBeamtimeProc {
00031 friend class TCBMBeamtimeProc;
00032
00033 public:
00034 TRICHProc();
00035 TRICHProc(const char* name);
00036 virtual ~TRICHProc();
00037
00038 virtual void InitEvent(TGo4EventElement*);
00039
00040
00041 virtual void FinalizeEvent();
00042
00043
00044 protected:
00045
00046 bool ReadMapmtGeometry(const char* fname);
00047 void ProcessRICH();
00048 void FillCircleFitHistograms(
00049 Int_t hIndex,
00050 CbmRichRingLight* ring,
00051 int nofEventHits);
00052
00053 void FillEllipseFitHistograms(
00054 Int_t hIndex,
00055 CbmRichRingLight* ring,
00056 int nofEventHits);
00057
00058 void DoAnalysis(
00059 const vector<CbmRichHitLight>&,
00060 bool isElectron,
00061 bool isPion,
00062 bool isMuon);
00063
00064 void DrawRingHits(
00065 CbmRichRingLight* ring,
00066 Int_t sedNum);
00067
00068 void DrawEventHits(
00069 const vector<CbmRichHitLight>&,
00070 Int_t sedNum);
00071
00072 void DrawCircles(
00073 const vector<CbmRichRingLight*>& rings,
00074 Int_t sedNum);
00075
00076 void DrawEllipses(
00077 const vector<CbmRichRingLight*>& rings,
00078 Int_t sedNum);
00079
00080 void SaveParameters();
00081
00082 void SetParticleIdentificationConditions();
00083
00084 TRICHParam * fPar;
00085
00087 TRocEvent* fRocInputEvent;
00088 TRICHEvent* fOutputEvent;
00089 TFiberHodEvent* fHodo1;
00090 TTriglogEvent* fTriglogEvent;
00091 TBeamMonitorEvent* fBeamEvent;
00092 TMbsCrateEvent* fMbsEvent;
00093 TEpicsEvent* fEpicsEvent;
00094
00095
00096 CbmRichRingFitterCOP* fRingFitter;
00097 CbmRichRingFitterEllipseTau* fEllipseFitter;
00098 CbmRichRingFinderHoughImpl* fRingFinder;
00099
00100 TH2* hEntries2dIntegral;
00101 TH2* hEntries2dMean;
00102 TH2* hEntriesperPMT;
00103 TH1* hADCall;
00104
00105 TH1* hHittime;
00106 TH1* hHitMultperPMT[17];
00107
00108 TH2* hHodXYscan;
00109 Int_t fNofHodWindowsX;
00110 Int_t fNofHodWindowsY;
00111
00112
00113
00114 TH1* hCircleFitRadius[4];
00115 TH2* hCircleFitCenter[4];
00116 TH1* hCircleFitChi2[4];
00117 TH1* hCircleFitDR[4];
00118
00119
00120
00121 TH1* hEllipseFitAaxis[4];
00122 TH1* hEllipseFitBaxis[4];
00123 TH1* hEllipseFitPhi[4];
00124 TH1* hEllipseFitBoverA[4];
00125 TH2* hEllipseFitCenter[4];
00126 TH1* hEllipseFitChi2[4];
00127
00128
00129
00130 TH1* hNofHitsEvAll[4];
00131 TH1* hNofHitsEvRingFinder[4];
00132 TH1* hNofHitsEvCircleFit[4];
00133 TH1* hNofHitsEvEllipseFit[4];
00134 TH1* hNofHitsEvRingFinderEff[4];
00135 TH1* hNofHitsEvCircleFitEff[4];
00136 TH1* hNofHitsEvEllipseFitEff[4];
00137
00138 TH1* hNofHitsRingFinder[4];
00139
00140 TH1* hNofHitsInHodo;
00141 TH2* hHodoADCvsNofHitInEv;
00142 TH2* hNotAssignedHitsXY;
00143
00144
00145
00146 TH2* hEntries2d[4];
00147
00148
00149 TH1* hNofFoundRings;
00150
00151 TH1* hTimespread;
00152
00153
00154 TH2* hMAPMT_hcor2d_s1;
00155 TH2* hMAPMT_hcor2d_s2;
00156 TH2* hMAPMT_hcor2d_s3;
00157 TH2* hMAPMT_hcor2d_s4;
00158 TH2* hMAPMT_hcor2d_s5;
00159
00160
00161 TH2* hMAPMT_HitMultvsO2;
00162
00163
00164 TGo4WinCond* fMAPMT_cond;
00165 TGo4WinCond* fMAPMT_tcond;
00166
00167
00168 TGo4PolyCond *fElectronCondc1c2;
00169 TGo4PolyCond *fMuonCondc1c2;
00170 TGo4PolyCond *fPionCondc1c2;
00171
00172
00173 vector<TGo4Picture*> fCirclePicture;
00174 vector<vector<TEllipse*> > fCircle;
00175 vector<TLatex*> fCircleText;
00176 vector<vector<TEllipse*> > fEllipse;
00177 vector<TLatex*> fEllipseText;
00178 vector<vector<TEllipse*> > fRingHits;
00179 vector<vector<TEllipse*> > fEventHits;
00180 vector<TH2*> hSED;
00181 const static int fMaxNofHitsInEventDraw = 100;
00182
00183
00184 MAPMT_Cell fMAPMTCells[NUM_MAPMP_CELLS];
00185
00186 int fEventNr;
00187 int fEventTime;
00188 Double_t fO2level;
00189 Double_t fH2Olevel;
00190
00191 int fNrSED;
00192 ClassDef(TRICHProc,1)
00193 };
00194
00195 #endif //TUNPACKPROCESSOR_H