//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Pattern recognition = track finding in the TPC // Using a riemann track fit // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Johannes Rauch TUM (original author) // Felix Boehmer TUM // // //----------------------------------------------------------- #ifndef TPCTRACKINITTASK_HH #define TPCTRACKINITTASK_HH // Base Class Headers ---------------- #include "FairTask.h" // Collaborating Class Headers ------- #include // remove if you do not need streaming op #include #include // Collaborating Class Declarations -- #include "TpcCluster.h" class TClonesArray; class TpcDigiPar; class TpcSPHit; class TpcTrackInitTask : public FairTask { public: // Constructors/Destructors --------- TpcTrackInitTask(); virtual ~TpcTrackInitTask(); // Operators // Accessors ----------------------- // Modifiers ----------------------- void SetClusterBranchName(const TString& name) {_clusterBranchName=name;} void SetRiemannBranchName(const TString& name) {_riemannBranchName=name;} void SetTrackOutBranchName(const TString& tracks) {_trackBranchName=tracks;} void SetRecoHitOutBranchName(const TString& rhs) {_recoHitBranchName=rhs;} void SetAlign(Bool_t opt=kTRUE){fAlign=opt;} void SetUseFullCov(Bool_t opt=kTRUE){_useFullCov=opt;} void SetWeightedPlaneConstruction(Bool_t opt=kTRUE){_weightedPlaneConstruction=opt;} void SetCutCov(Bool_t opt=kTRUE){_cutCov=opt;} void SetDipCut(Double_t val=0.01){_dipCut=val;} void SetPersistence(Bool_t opt=kTRUE) {_persistence=opt;} // store GFTracks and assoc. RecoHits void SetAllRecoHitPersistence(Bool_t opt=kTRUE) {_arhpersistence=opt;} void SetSimulation(Bool_t opt=kTRUE) {_issim=opt;} // Operations ---------------------- virtual InitStatus Init(); virtual void SetParContainers(); virtual void Exec(Option_t* opt); void SetMCPid(Bool_t opt=kTRUE) {_mcPid = opt;} // use MC information for particle identification void SetPDG(int pdg) {_pdg=pdg;} // use hypothesis void SetSmoothing(bool s=true) {_smoothing=s;} // use smoothing for the Kalman //void useGeane(Bool_t geane=kTRUE) {_geane=geane;} void SetCosmicSorting(Bool_t opt=kTRUE) {_cosmicSorting=opt;} void SetInteractionPoint(const TVector3 point){fInteractionPoint=point;} void WriteHistograms(const TString& filename); private: // Private Data Members ------------ TString _clusterBranchName; TString _riemannBranchName; TString _trackBranchName; TString _recoHitBranchName; Int_t fTpcClusterBranchID; Int_t fSPHitID; Int_t fClBrID; Double_t _dipCut; TClonesArray* _mcTrackArray; TClonesArray* _clusterArray; TClonesArray* _recoHitArray; TClonesArray* _trackArray; TClonesArray* _riemannTrackArray; TClonesArray* _riemannHitArray; TpcDigiPar* fpar; Bool_t _persistence; Bool_t _arhpersistence; //write out ALL recohits, not just the ones in tracks //if set, _persistence can be false and SPHits are still persisted Bool_t _smoothing; Bool_t _cosmicSorting; Bool_t _mcPid; Bool_t _useFullCov; Bool_t _weightedPlaneConstruction; Bool_t _cutCov; Bool_t fAlign; Bool_t _issim; double Bz; //mag field double fmaxLenZbackw; // max length in z of backward target track TVector3 fInteractionPoint; int _pdg; int counter; std::map fRecoHitMap; std::set fToWrite; public: ClassDef(TpcTrackInitTask,2) }; #endif //-------------------------------------------------------------- // $Log$ //--------------------------------------------------------------