//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // a GEANE (sd-system) track representation // (q/p, v',w',v,w,spu) // (v,w) refers to DetPlane system // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Sebastian Neubert TUM (original author) // Andrea Fontana INFN // Elisabetta Prencipe 21/5/2014 // //----------------------------------------------------------- #ifndef GeaneTRACKREP2_HH #define GeaneTRACKREP2_HH // Base Class Headers ---------------- #include "AbsTrackRep.h" //#include "FairTrackParP.h" // Collaborating Class Headers ------- #include // remove if you do not need streaming op #include "TVectorT.h" // Collaborating Class Declarations -- //class FairGeaneProNew; class GeaneTrackRep2 : public AbsTrackRep { public: // Constructors/Destructors --------- GeaneTrackRep2(); GeaneTrackRep2(const DetPlane& plane, // will be defined at origin of plane const TVector3& mom, const TVector3& poserr, const TVector3& momerr, int PDGCode); virtual ~GeaneTrackRep2(); virtual AbsTrackRep* clone() const {return new GeaneTrackRep2(*this);} virtual AbsTrackRep* prototype()const{return new GeaneTrackRep2();} // Operators friend std::ostream& operator<< (std::ostream& s, const GeaneTrackRep2& me); // Accessors ----------------------- // Modifiers // Operations ---------------------- virtual double extrapolate(const DetPlane&, TMatrixT& statePred); //virtual void extrapolate(const DetPlane&, // const TMatrixT& stateFrom // TMatrixT& stateResult); virtual double extrapolate(const DetPlane&, TMatrixT& statePred, TMatrixT& covPred); //these two are overriding AbsTrackRep methods void extrapolateToPoint(const TVector3& pos, TVector3& poca, TVector3& normVec); void extrapolateToLine(const TVector3& point1, const TVector3& point2, TVector3& poca, TVector3& normVec, TVector3& poca_onwire); // TVector3 getPocaOnLine(const TVector3& p1, // const TVector3& p2, // bool back=false); virtual TVector3 getPos(const DetPlane&) ; virtual TVector3 getMom(const DetPlane&) ; virtual void getPosMom(const DetPlane&,TVector3& pos,TVector3& mom) ; virtual void getPosMomCov(const DetPlane& pl,TVector3& pos,TVector3& mom,TMatrixT& cov); virtual double getCharge()const {return fCharge;} //FairGeaneProNew* getPropagator() {return _geane;} int getPDG() {return fPdg;}; // void setPropagator(FairGeaneProNew* g){_geane=g;} void switchDirection(){;} // (-1,0,1) -> (backward prop,decide myself,forward) private: // Private Data Members ------------ // FairGeaneProNew* _geane; //! // double _spu; // sign of z-component of momentum int fPdg; // pdg code of the particle to be tracked int fG3ParticleID; // pdg code of the particle to be tracked double fCharge; // Private Methods ----------------- void poca2Line(const TVector3&,const TVector3&,const TVector3&,TVector3&); void pocaLine2Line(const TVector3& point1,const TVector3& line1,const TVector3& point2, const TVector3& line2,TVector3& result1,TVector3& result2); public: ClassDef(GeaneTrackRep2,2) }; #endif //-------------------------------------------------------------- // $Log$ //--------------------------------------------------------------