/** * \file CbmAnaConversionReco.h * * \author Sascha Reinecke * \date 2014 **/ #ifndef CBM_ANA_CONVERSION_RECO #define CBM_ANA_CONVERSION_RECO // included from ROOT #include #include #include #include #include // included from CbmRoot #include "CbmMCTrack.h" #include "CbmVertex.h" #include "../../littrack/cbm/elid/CbmLitGlobalElectronId.h" #include "../dielectron/CbmLmvmKinematicParams.h" #include "CbmRichElectronIdAnn.h" using namespace std; class CbmAnaConversionReco { public: CbmAnaConversionReco(); virtual ~CbmAnaConversionReco(); void Init(); void InitHistos(); void Finish(); void SetTracklistMC(vector MCTracklist); void SetTracklistReco(vector MCTracklist, vector RecoTracklist1, vector RecoTracklist2, vector ids, vector chi, vector GlobalTrackId); void InvariantMassMC_all(); Double_t Invmass_4particles(const CbmMCTrack* mctrack1, const CbmMCTrack* mctrack2, const CbmMCTrack* mctrack3, const CbmMCTrack* mctrack4); Double_t SmearValue(Double_t value); Double_t Invmass_4particlesRECO(const TVector3 part1, const TVector3 part2, const TVector3 part3, const TVector3 part4); void InvariantMassTest_4epem(); Int_t NofDaughters(Int_t motherId); Double_t CalculateOpeningAngleReco(TVector3 electron1, TVector3 electron2); Double_t CalculateOpeningAngleMC(CbmMCTrack* mctrack1, CbmMCTrack* mctrack2); Double_t CalculateOpeningAngleBetweenGammasMC(CbmMCTrack* mctrack1, CbmMCTrack* mctrack2, CbmMCTrack* mctrack3, CbmMCTrack* mctrack4); Double_t CalculateOpeningAngleBetweenGammasReco(TVector3 electron1, TVector3 electron2, TVector3 electron3, TVector3 electron4); void CalculateInvMassWithFullRecoCuts(); CbmLmvmKinematicParams CalculateKinematicParamsReco(const TVector3 electron1, const TVector3 electron2); CbmLmvmKinematicParams CalculateKinematicParams_4particles(const TVector3 part1, const TVector3 part2, const TVector3 part3, const TVector3 part4); Bool_t IsRichElectronANN(Int_t globalTrackIndex, Double_t momentum); Bool_t IsRichElectronNormal(Int_t globalTrackIndex, Double_t momentum); private: TClonesArray* fMcTracks; TClonesArray* fGlobalTracks; TClonesArray* fRichRings; CbmRichElectronIdAnn* fRichElIdAnn; CbmLitGlobalElectronId* electronidentifier; vector fMCTracklist_all; vector fRecoTracklistEPEM; vector fRecoTracklistEPEM_ids; vector fRecoTracklistEPEM_chi; vector fRecoTracklistEPEM_gtid; // globalTrack Id vector fRecoMomentum; vector fRecoRefittedMomentum; vector fHistoList_MC; // list of all histograms generated with MC data vector fHistoList_reco; // list of all histograms generated with reconstructed data vector fHistoList_reco_mom; // list of all histograms of reconstruction data (used momenta) vector fHistoList_gg; vector fHistoList_gee; vector fHistoList_eeee; vector fHistoList_all; TH1D * fhInvariantMass_MC_all; TH1D * fhInvariantMass_MC_pi0; TH1D * fhInvariantMass_MC_pi0_epem; TH1D * fhInvariantMass_MC_pi0_gepem; TH1D * fhInvariantMass_MC_pi0_gg; TH1D * fhInvariantMass_MC_eta; TH1D * fhInvariantMassReco_pi0; TH1D * fhMCtest; // histograms for procedure "InvariantMassTest_4epem()" TH1D * fhEPEM_invmass_gg_mc; TH1D * fhEPEM_invmass_gg_refitted; TH1D * fhEPEM_invmass_gee_mc; TH1D * fhEPEM_invmass_gee_refitted; TH1D * fhEPEM_invmass_eeee_mc; TH1D * fhEPEM_invmass_eeee_refitted; TH1D * fhEPEM_invmass_all_mc; TH1D * fhEPEM_invmass_all_refitted; TH1D * fhEPEM_openingAngle_gg_mc; TH1D * fhEPEM_openingAngle_gg_refitted; TH1D * fhEPEM_openingAngle_gee_mc; TH1D * fhEPEM_openingAngle_gee_refitted; TH1D * fhEPEM_openingAngle_gee_mc_dalitz; TH1D * fhEPEM_openingAngle_gee_refitted_dalitz; TH1D * fhEPEM_openingAngle_betweenGammas_mc; TH1D * fhEPEM_openingAngle_betweenGammas_reco; TH2D * fhPi0_pt_vs_rap_gg; TH2D * fhPi0_pt_vs_rap_gee; TH2D * fhPi0_pt_vs_rap_all; TH1D * fhPi0_pt_gg; TH1D * fhPi0_pt_gee; TH1D * fhPi0_pt_all; TH1D * fhEPEM_efficiencyCuts; TH2D * fhEPEM_rap_vs_chi; TH2D * fhEPEM_rap_vs_invmass; TH1D * fhInvMass_EPEM_mc; TH1D * fhInvMass_EPEM_stsMomVec; TH1D * fhInvMass_EPEM_refitted; TH1D * fhInvMass_EPEM_error_stsMomVec; TH1D * fhInvMass_EPEM_error_refitted; TH1D * fhInvMass_EPEM_openingAngleRef; // refitted TH1D * fhUsedMomenta_stsMomVec; TH1D * fhUsedMomenta_mc; TH1D * fhUsedMomenta_error_stsMomVec; TH1D * fhUsedMomenta_error_refitted; TH1D * fhUsedMomenta_errorX_stsMomVec; TH2D * fhUsedMomenta_vsX_stsMomVec; TH1D * fhUsedMomenta_errorY_stsMomVec; TH2D * fhUsedMomenta_vsY_stsMomVec; TH1D * fhUsedMomenta_errorZ_stsMomVec; TH2D * fhUsedMomenta_vsZ_stsMomVec; TH1D * fhUsedMomenta_errorX_refitted; TH2D * fhUsedMomenta_vsX_refitted; TH1D * fhUsedMomenta_errorY_refitted; TH2D * fhUsedMomenta_vsY_refitted; TH1D * fhUsedMomenta_errorZ_refitted; TH2D * fhUsedMomenta_vsZ_refitted; TH1D * fhInvariantMass_pi0epem; TH1D * fhPi0_startvertex; TH1D * fhPi0_startvertexElectrons_all; TH1D * fhPi0_startvertexElectrons_gg; TH1D * fhPi0_startvertexElectrons_gee; TH2D * fhPi0_startvertex_vs_chi; TH2D * fhPi0_startvertex_vs_momentum; TH1D * fhInvMassWithFullRecoCuts; // timer TStopwatch timer; Double_t fTime; CbmAnaConversionReco(const CbmAnaConversionReco&); CbmAnaConversionReco operator=(const CbmAnaConversionReco&); ClassDef(CbmAnaConversionReco,1) }; #endif