// ------------------------------------------------------------------------- // ----- CbmRichID header file ----- // ----- Created 18/04/05 ----- // ------------------------------------------------------------------------- #ifndef CBMRICHID_H #define CBMRICHID_H #include "CbmTask.h" #include "CbmStack.h" #include "TClonesArray.h" #include "TH1D.h" #include "TH2D.h" #include "TH3D.h" #include "TArrayD.h" #include "CbmRootManager.h" class CbmRichID : public CbmTask { public: CbmRichID(); CbmRichID(const char *name, const char *title="ID analysis"); virtual ~CbmRichID(); InitStatus Init(); void Exec(Option_t* option); void Finish(); void SetDebug(Option_t *debug="") {fDebug = debug;} void AnalyzeAcceptance(); void AnalyzeMatching_Spots(); void AnalyzeMatching_Rings(); void DefineRingID(); private: // void MakeLightSpots(TClonesArray& fListLightSpots); TClonesArray* fListStack; // List of particles in a stack TClonesArray* fListRICHpts; // RICH MC points TClonesArray* fListRICHhits; // RICH hits TClonesArray* fListRICHtracks; // RICH hits TClonesArray* fListRICHrings; // RICH ring guidances TClonesArray* fListLightSpots;// Light spots list Bool_t fEbyEgraph; // Flag to switch on/off event-by-event graphs with hits Int_t fEvent; // current event number Int_t fNprimary; // number of primary tracks Int_t fNHits; // number of hits TArrayD *fXHits; // array of hit x-coordinates TArrayD *fYHits; // array of hit y-coordinates Int_t fNrgs; // number of ring guidances Int_t fNminSTS; // minimum number of STS hits required for acceptance Int_t fNminHits; // minimum number of RICH hits required for acceptance Double_t fDistanceCut; // distance cut for ring-track matching Double_t fDiffRadiusMin; // difference bewteen radii of lightspot - found ring Double_t fPotentialHitsMin; // minimum fraction of potential hits Double_t fPotentialHitsMax; // maximum fraction of potential hits Double_t fDistRingID; // maximum distance between light spot and ring Double_t fRmin; // min/max electron radius (appr.) Double_t fRmax; Double_t fvx; // cut for main vertex tracks Double_t fvy; Double_t fvz; Int_t mother_testID; //test Option_t *fDebug; //! debug flag TH2D *fh_gen_e; TH2D *fh_gen_pi; TH2D *fh_gen_mu; TH2D *fh_gen_k; // measured particles TH2D *fh_meas_e; TH2D *fh_meas_pi; TH2D *fh_meas_mu; TH2D *fh_meas_k; // accepted particles (N_sts >= fNminSTS) TH2D *fh_acc_e; TH2D *fh_acc_pi; TH2D *fh_acc_mu; TH2D *fh_acc_k; // particles with reconstructed ring TH2D *fh_ring_e; TH2D *fh_ring_pi; TH2D *fh_ring_mu; TH2D *fh_ring_k; TH2D *fh_ring_nsts_e; TH2D *fh_ring_nsts_pi; TH2D *fh_ring_nsts_mu; TH2D *fh_ring_mv_e; TH2D *fh_ring_mv_pi; TH2D *fh_ringall_e; TH2D *fh_ringall_pi; TH2D *fh_ringall_mu; TH2D *fh_spot_e; TH2D *fh_spot_pi; TH2D *fh_spot_mu; TH2D *fh_spotall_e; TH2D *fh_spotall_pi; TH2D *fh_spotall_mu; TH2D *fh_spot_notrec_e; TH2D *fh_spot_notrec_pi; TH2D *fh_spot_prim_notrec_e; TH2D *fh_spot_prim_notrec_pi; TH1D *fh_spot_prim_notrec_e_r; TH1D *fh_spot_prim_notrec_pi_r; TH1D *fh_spot_prim_notrec_e_p; TH1D *fh_spot_prim_notrec_pi_p; TH2D *fh_fake_ring; TH2D *fh_r_points_true; TH2D *fh_r_points_fake; TH2D *fh_fake_p_radius; // particles with MC ring (light spot) and correctly matched track TH2D *fh_spotmatchtrue_e; TH2D *fh_spotmatchtrue_pi; TH2D *fh_spotmatchtrue_mu; // particles with MC ring (light spot) and wrongly matched track TH2D *fh_spotmatchfalse_e; TH2D *fh_spotmatchfalse_pi; TH2D *fh_spotmatchfalse_mu; TH2D *fh_spotmatchfalse_track_e; TH2D *fh_spotmatchfalse_track_pi; TH2D *fh_spotmatchfalse_track_mu; // particles with reconstructed ring and correctly matched track TH2D *fh_ringmatchtrue_e; TH2D *fh_ringmatchtrue_pi; TH2D *fh_ringmatchtrue_mu; TH2D *fh_ringmatchtrue_mv_e; TH2D *fh_ringmatchtrue_mv_pi; // particles with reconstructed ring and wrongly matched track TH2D *fh_ringmatchfalse_e; TH2D *fh_ringmatchfalse_pi; TH2D *fh_ringmatchfalse_mu; TH2D *fh_ringmatchfalse_track_e; TH2D *fh_ringmatchfalse_track_pi; TH2D *fh_ringmatchfalse_track_mu; TH2D *fh_ringmatchfalse_track_mv_e; TH2D *fh_ringmatchfalse_track_mv_fake_e; TH2D *fh_ringmatchfalse_track_mv_pi; // identified particles TH2D *fh_id_e; TH2D *fh_id_pi; TH2D *fh_id_mu; TH2D *fh_id_k; // misidentified particles TH2D *fh_misid_e; TH2D *fh_misid_pi; TH2D *fh_misid_mu; TH2D *fh_misid_k ; // additional (fake) rings TH2D *fh_ringfake_e; TH2D *fh_ringfake_pi; TH2D *fh_ringfake_mu; TH2D *fh_ringfake_k; // Distance between ring center and track extrapolation for closest distance match TH3D *fh_disttrue_e; TH3D *fh_disttrue_pi; TH3D *fh_distfalse_e; TH3D *fh_distfalse_fake_e; TH3D *fh_distfalse_pi; TH3D *fh_disttrue_mv_e; TH3D *fh_disttrue_mv_pi; TH3D *fh_distfalse_mv_e; TH3D *fh_distfalse_mv_fake_e; TH3D *fh_distfalse_mv_pi; // Radius versus p in bins of pt TH3D *fh_radius; ClassDef(CbmRichID,1) }; #endif