#ifndef PNDRICHRECO_H #define PNDRICHRECO_H #include "FairGeoSet.h" #include "TVector3.h" #include "TClonesArray.h" #include "PndRichGeo.h" #include "PndRichPhoton.h" #include "PndRichBarPoint.h" #include "PndRichMirrorSegment.h" #include "TVector3.h" #include "TLorentzVector.h" #include #include #include class TClonesArray; using std::map; using std::vector; using std::pair; class PndRichReco //: public FairGeoSet { private: // removed from PndPidCorrelator.h TClonesArray* fRichPDHit; //! PndRichPDHit TCA PndRichGeo* fGeo; UInt_t fEvent; UInt_t fGeoVersion; UInt_t fGeoVersionMirr; UInt_t fParticleID; Double_t fMirrorLength; TVector3 fTrackPosition; TVector3 fTrackDirection; // flat mirror parametrs std::vector fMirrSegs; Double_t fPhDetAngle; Double_t fZamid; TVectorT gResVect; TMatrixT gRotMatr; protected: public: PndRichReco(); PndRichReco(UInt_t version); ~PndRichReco(); void Init(); void Register(); void SetGeoVersion(UInt_t version) { fGeoVersion = version; }; void RichFullReconstruction(TVector3 pos, TVector3 dir, Float_t ts, Float_t &chi2, Float_t &chTh, Float_t &dChTh, Int_t &nph ); std::vector GetPhis(); std::vector GetThetas(); std::vector GetDThetas(); std::vector CherenkovPhotonListFlat( PndRichBarPoint *track ); double BetaPeakFinding(std::vector photons, Double_t nopt, Double_t nnz); void HitSelection(std::vector &it, std::vector &ph, std::vector &th, std::vector photons, Double_t beta, Double_t nopt, Double_t nnz, Double_t dthc); void AppendFlatMirrorReflections(std::vector &ph, TVector3 hit, Double_t hitTime, PndRichBarPoint *track); ClassDef(PndRichReco,1) }; #endif