#ifndef HPARTICLET0RECO_H #define HPARTICLET0RECO_H #include "hreconstructor.h" #include "hparticlepathlengthcorr.h" #include "TString.h" #include #include using namespace std; class HParticleCand; class HCategory; class HParticleT0Reco : public HReconstructor { private: Double_t c; HCategory* candCat; HCategory* catStart; vector times; vector index; vector error; vector timesTof; vector indexTof; vector errorTof; // circular buffers with lists (optimised) list t0fortof; list t0errfortof; list t0forrpc; list t0errforrpc; //Systematic offsets! Float_t t0rpc; Float_t t0tof; TString run; Bool_t fdoPathLengthCorr; // correct path legnth before T0 calculation,default = kTRUE Bool_t fUseFlagged; // use flagged kIsUsed candidates for t0 reco (default=kTRUE) HParticlePathLengthCorr fpathCorr; void fill(); void fillTof(Float_t t0, Float_t err); void fillRpc(Float_t t0, Float_t err); Float_t getT0rpc(); Float_t getT0tof(); Float_t getBeta(HParticleCand* pCand); void fillBuffer(); void fillCorrections(); void correctBeta(); // Mean "mass" for RPC Double_t masspp(Double_t x); Double_t masspm(Double_t x); Double_t masspr(Double_t x); public: HParticleT0Reco(const Text_t* name="ParticleT0Reco",const Text_t* title="ParticleT0Reco"); ~HParticleT0Reco(); Int_t execute(void); Bool_t init(void); Bool_t finalize(){ return kTRUE;} void setBeamTime(TString run="apr12"); void setDoPathLengthCorr (Bool_t docorr=kTRUE) { fdoPathLengthCorr = docorr;} void setUseFlaggedCandidates(Bool_t use=kTRUE) { fUseFlagged = use;} Bool_t isParticle(Int_t PID, HParticleCand* pCand, Float_t sigma); ClassDef(HParticleT0Reco,0) }; #endif