PandaRoot
PndCurlingTrackFinderTask.h
Go to the documentation of this file.
1 // PndCurlingTrackFinderTask
3 // Finds Track
5 
16 #pragma once
17 
18 #include "FairTask.h"
19 #include <vector>
20 
21 #include "PndCurlingTrackFinder.h"
22 #include "PndSttStrawMap.h"
23 #include "PndGeoSttPar.h"
24 #include "PndSttGeometryMap.h"
25 
26 #include "PndPreselectSttHits.h"
27 #include "PndSttCA.h"
28 
29 struct TrackSolution;
30 
31 class PndCurlingTrackFinderTask : public FairTask {
32  public:
35 
38 
40  virtual InitStatus Init();
41 
42  virtual void AddBranchName(TString name) { fBranchMap[name] = nullptr; }
43  virtual void AddBranchNameUnassigned(TString name)
44  {
45  fBranchMapUnassigned[name] = nullptr;
46  }
47  virtual void AddFoundTrackName(TString name) { fBranchNameFoundTrack = name; }
48  virtual void AddFoundTrackCandName(TString name) { fBranchNameFoundTrackCand = name; }
49  void SetParContainers();
50 
52  virtual void Exec(Option_t *opt);
53 
54  virtual void Finish();
55 
56  protected:
57  void FillPndTrack(std::vector<TripletSolution> &solutions);
58  void FillPndTrackDebug(std::vector<TripletSolution> &solutions, TClonesArray *tracks, TClonesArray *trackCands);
59  PndTrack GetPndTrack(double B, std::vector<FairHit *> &hits, TVector3 &circle, PndTrackCand &cand);
60 
61  private:
62  FairRootManager *ioman = nullptr;
63 
64  PndGeoSttPar *fSttParameters = nullptr; // needed for SttStrawMap
65  TClonesArray *fTubeArray = nullptr; // needed for SttStrawMap
66 
67  // PndSttStrawMap fStrawMap; // for getting more information about the tubes
68  PndSttGeometryMap *fGeometryMap = nullptr;
69 
70  PndCurlingTrackFinder *fFinder = nullptr;
71 
72  std::vector<TString> fBranchNames;
73  std::map<TString, TClonesArray *> fBranchMap;
74  std::vector<TString> fBranchNamesUnassigned;
75  std::map<TString, TClonesArray *> fBranchMapUnassigned;
76  TString fBranchNameFoundTrack;
77  TString fBranchNameFoundTrackCand;
78  TClonesArray *fBranchFoundTrack;
79  TClonesArray *fBranchFoundTrackCand;
80  TClonesArray *fTrackCandArray = nullptr;
81  TClonesArray *fTrackArray = nullptr;
82  TClonesArray *fTripletTracksCands = nullptr;
83  TClonesArray *fTripletTracks = nullptr;
84  TClonesArray *fContinuousTripletTracksCands = nullptr;
85  TClonesArray *fContinuousTripletTracks = nullptr;
86  TClonesArray *fTripletTracksCandsAfterAdding = nullptr;
87  TClonesArray *fTripletTracksAfterAdding = nullptr;
88  TClonesArray *fFinalTrackCandArray = nullptr;
89  TClonesArray *fFinalTrackArray = nullptr;
90  PndSttCA *fCATrackFinder = nullptr;
91 
92  bool fWithTubeReduction;
93  bool fWithCombiReduction;
94  int fVerbose;
95 
96  ClassDef(PndCurlingTrackFinderTask, 1);
97 };
virtual InitStatus Init()
Initializes and loads the data for the PndCurlingTrackFinderTask.
virtual void AddFoundTrackName(TString name)
virtual void AddBranchNameUnassigned(TString name)
Search for tracks only in given branches. If no BranchName is given all tracking detectors are taken...
virtual void Exec(Option_t *opt)
void FillPndTrackDebug(std::vector< TripletSolution > &solutions, TClonesArray *tracks, TClonesArray *trackCands)
virtual void AddFoundTrackCandName(TString name)
void FillPndTrack(std::vector< TripletSolution > &solutions)
virtual ~PndCurlingTrackFinderTask()
virtual void AddBranchName(TString name)
Search for tracks only in given branches. If no BranchName is given all tracking detectors are taken...
PndTrack GetPndTrack(double B, std::vector< FairHit *> &hits, TVector3 &circle, PndTrackCand &cand)