• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

beamtime/cern-oct11/go4/RICH/TRICHProc.h (r4864/r3566)

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 //ring fitter
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; // may call protected process methods
00032    
00033    public:
00034    TRICHProc();
00035    TRICHProc(const char* name);
00036    virtual ~TRICHProc();
00037    
00038    virtual void InitEvent(TGo4EventElement*); 
00039    
00040    /* this is the main processing function here*/
00041    virtual void FinalizeEvent();
00042    
00043    
00044 protected:
00045    // local subroutines      
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    //ring finders and fitters
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    //Circle fitter histograms
00113    //[0] is electron, [1] is pion, [2] is muon, [3] is all
00114    TH1* hCircleFitRadius[4];
00115    TH2* hCircleFitCenter[4];
00116    TH1* hCircleFitChi2[4];
00117    TH1* hCircleFitDR[4];
00118    
00119    //ellipse fitter histograms
00120    //[0] is electron, [1] is pion, [2] is muon, [3] is all
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    // efficiency historams vs. nof hits
00129    //[0] is electron, [1] is pion, [2] is muon, [3] is all
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]; // number of hits in found ring after ring finder
00139    
00140    TH1* hNofHitsInHodo; //Number of hits in hodoscope
00141    TH2* hHodoADCvsNofHitInEv; // Hodoscope ADC vs number of hits in ring
00142    TH2* hNotAssignedHitsXY; // XY position of the hits not assigned to the ring
00143 
00144    //Number of entries 2D
00145    //[0] is electron, [1] is pion, [2] is muon, [3] is all
00146    TH2* hEntries2d[4];
00147 
00148    //Number of found rings per event
00149    TH1* hNofFoundRings;
00150 
00151    TH1* hTimespread;
00152    
00153    // additional histos for hodoscope correlation
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    // additional histos for correlation with gas purity
00161    TH2* hMAPMT_HitMultvsO2;
00162    
00163    // conditions on ADC, time
00164    TGo4WinCond* fMAPMT_cond;
00165    TGo4WinCond* fMAPMT_tcond;
00166    
00167    // conditions for electons, muons and pions
00168    TGo4PolyCond  *fElectronCondc1c2;  
00169    TGo4PolyCond  *fMuonCondc1c2;      
00170    TGo4PolyCond  *fPionCondc1c2;      
00171    
00172    // event display 
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    // variables and data structures
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

Generated on Tue Dec 10 2013 04:52:17 for ROCsoft by  doxygen 1.7.1