FairRoot/PandaRoot
Public Member Functions | Private Member Functions | Private Attributes | List of all members
PndMvdRiemannTrackFinderTask Class Reference

#include <PndMvdRiemannTrackFinderTask.h>

Inheritance diagram for PndMvdRiemannTrackFinderTask:

Public Member Functions

 PndMvdRiemannTrackFinderTask ()
 
virtual ~PndMvdRiemannTrackFinderTask ()
 
 PndMvdRiemannTrackFinderTask (const PndMvdRiemannTrackFinderTask &)=delete
 
PndMvdRiemannTrackFinderTaskoperator= (const PndMvdRiemannTrackFinderTask &)=delete
 
virtual void SetParContainers ()
 
virtual InitStatus Init ()
 
virtual InitStatus ReInit ()
 
virtual void Exec (Option_t *opt)
 
virtual void FinishEvent ()
 
void AddHitBranch (TString branchName)
 
void SetMaxSZChi2 (double val)
 
void SetMaxSZDist (double val)
 
void SetMinPointDist (double val)
 
void SetMaxDist (double val)
 
void SetCutDistH (TH2F *hist)
 
void SetCutChi2H (TH2F *hist)
 
void SetB (Double_t B)
 
void SetVerbose (Int_t verbose)
 
void SetPersistence (Bool_t val)
 
void FillHitArray ()
 
void InitHitArray (TString branchName)
 

Private Member Functions

void Register ()
 
void Reset ()
 
void ProduceHits ()
 
 ClassDef (PndMvdRiemannTrackFinderTask, 1)
 

Private Attributes

std::vector< TStringfHitBranch
 
TString fTrackBranch
 
int fEventNr
 
double fMaxSZChi2
 
double fMaxSZDist
 
double fMinPointDist
 
double fMaxDist
 
double fB
 
std::vector< TClonesArray * > fHitArray
 
TClonesArray * fTrackCandArray
 
TClonesArray * fRiemannTrackArray
 
TClonesArray * fTrackArray
 
TH2F * fCutDistH
 
TH2F * fCutChi2H
 
Bool_t fInitDone
 
Bool_t fPersistence
 
BinaryFunctor * fStopFunctor
 
BinaryFunctor * fTimeGapFunctor
 
PndGeoSttParfSttParameters
 
TClonesArray * fTubeArray
 

Detailed Description

Definition at line 15 of file PndMvdRiemannTrackFinderTask.h.

Constructor & Destructor Documentation

PndMvdRiemannTrackFinderTask::PndMvdRiemannTrackFinderTask ( )

Definition at line 24 of file PndMvdRiemannTrackFinderTask.cxx.

References PndGeoHandling::Instance().

24  :
25  FairTask("MVD Riemann Track Finder"),
26  fHitBranch(),
27  fTrackBranch(""),
28  fEventNr(0),
29  fMaxSZChi2(1),
30  fMaxSZDist(10),
31  fMinPointDist(1),
32  fMaxDist(1),
33  fB(2.0),
34  fHitArray(),
35  fTrackCandArray(NULL),
36  fRiemannTrackArray(NULL),
37  fTrackArray(NULL),
38  fCutDistH(NULL),
39  fCutChi2H(NULL),
40  fInitDone(kFALSE),
41  fPersistence(kTRUE),
42  fStopFunctor(NULL),
43  fTimeGapFunctor(NULL),
44  fSttParameters(NULL),
45  fTubeArray(NULL)
46 {
48 }
std::vector< TClonesArray * > fHitArray
static PndGeoHandling * Instance()
PndMvdRiemannTrackFinderTask::~PndMvdRiemannTrackFinderTask ( )
virtual

Definition at line 50 of file PndMvdRiemannTrackFinderTask.cxx.

51 {
52 }
PndMvdRiemannTrackFinderTask::PndMvdRiemannTrackFinderTask ( const PndMvdRiemannTrackFinderTask )
delete

Member Function Documentation

void PndMvdRiemannTrackFinderTask::AddHitBranch ( TString  branchName)

Definition at line 120 of file PndMvdRiemannTrackFinderTask.cxx.

References fHitBranch, and fInitDone.

121 {
122  if (fInitDone == kFALSE)
123  fHitBranch.push_back(branchName);
124  else
125  std::cout << "-W- AddHitBranch has to be called before the Init() of the task!" << std::endl;
126 }
PndMvdRiemannTrackFinderTask::ClassDef ( PndMvdRiemannTrackFinderTask  ,
 
)
private
void PndMvdRiemannTrackFinderTask::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Definition at line 137 of file PndMvdRiemannTrackFinderTask.cxx.

References PndMvdSttGemRiemannTrackFinder::AddHits(), PndTrackCand::CalcTimeStamp(), fB, fCutChi2H, fCutDistH, fEventNr, fHitArray, fHitBranch, FillHitArray(), PndMvdSttGemRiemannTrackFinder::FindTracks(), fMaxDist, fMaxSZChi2, fMaxSZDist, fMinPointDist, fTrackArray, fTrackCandArray, fTubeArray, fVerbose, PndRiemannTrackFinder::GetPndTrack(), PndRiemannTrackFinder::GetTrackCand(), i, PndRiemannTrackFinder::NTracks(), PndTrack::Print(), PndMvdSttGemRiemannTrackFinder::SetCutChi2H(), PndMvdSttGemRiemannTrackFinder::SetCutDistH(), PndRiemannTrackFinder::SetMaxPlaneDistance(), PndRiemannTrackFinder::SetMaxSZChi2(), PndRiemannTrackFinder::SetMaxSZDist(), PndRiemannTrackFinder::SetMinNumberOfHits(), PndRiemannTrackFinder::SetMinPointDist(), PndMvdSttGemRiemannTrackFinder::SetSttTubeArray(), PndTrack::SetTrackCand(), PndRiemannTrackFinder::SetVerbose(), and trackFinder.

138 {
139 
140  if (fVerbose > 0) std::cout << std::endl;
141  if (fVerbose > 0) std::cout << "------------- event " << fEventNr << "----------------" << std::endl;
142 
143  // Reset output array
144  if ( ! fTrackCandArray )
145  Fatal("Exec", "No trackCandArray");
146 
147  fTrackCandArray->Delete();
148  fTrackArray->Delete();
149  // fRiemannTrackArray->Delete();
150 
152  trackFinder.SetVerbose(fVerbose);
153  trackFinder.SetSttTubeArray(fTubeArray);
154 
155  FillHitArray();
156 
157  FairRootManager *ioman = FairRootManager::Instance();
158 
159 
160  for (int i = 0; i < (int)fHitBranch.size(); i++){
161  trackFinder.AddHits(fHitArray[i], ioman->GetBranchId(fHitBranch[i]));
162  if (fVerbose > 0) std::cout << "TrackFinder.AddHits: " << fHitBranch[i] << " Number: " << ioman->GetBranchId(fHitBranch[i]) << std::endl;
163  }
164  trackFinder.SetMaxSZChi2(fMaxSZChi2);
165  trackFinder.SetMinPointDist(fMinPointDist);
166  trackFinder.SetMaxPlaneDistance(fMaxDist);
167  trackFinder.SetMaxSZDist(fMaxSZDist);
168  trackFinder.SetMinNumberOfHits(4);
169  //trackFinder.SetGeoH(fGeoH);
170 
171  trackFinder.SetCutDistH(fCutDistH);
172  trackFinder.SetCutChi2H(fCutChi2H);
173 
174  trackFinder.FindTracks();
175 
176 
177  if (fVerbose > 0) std::cout << " -I- PndMvdRiemannTrackFinderTask::Exec : Found Tracks: " << trackFinder.NTracks() << " in event no. " << fEventNr++ << std::endl;
178  if (fVerbose > 0) std::cout << " -I- PndMvdRiemannTrackFinderTask::Exec : ----------------" << std::endl;
179 
180 
181  for (int i = 0; i < trackFinder.NTracks(); i++){
182  PndTrackCand* myCand = new ((*fTrackCandArray)[i])PndTrackCand(trackFinder.GetTrackCand(i));
183 // if (fVerbose > 1)
184 // {
185 // std::cout << "Track " << i << std::endl;
186 // std::cout << "Links: ";
187 // ((FairMultiLinkedData*) myCand)->Print();
188 // std::cout << std::endl;
189 // }
190 
191  myCand->CalcTimeStamp();
192 // if (fVerbose > 1)
193 // trackFinder.GetTrack(i).Print();
194  //PndRiemannTrack myTrack = trackFinder.GetTrack(i);
195 
196  PndTrack* myTrack = new ((*fTrackArray)[i])PndTrack(trackFinder.GetPndTrack(i, fB));
197  if (myCand->GetTimeStamp() == 0){
198  myTrack->SetTimeStamp(0.0001 * (i+1));
199  myCand->SetTimeStamp(0.0001 * (i+1));
200 
201  } else {
202  myTrack->SetTimeStamp(myCand->GetTimeStamp());
203  myTrack->SetTimeStampError(myCand->GetTimeStampError());
204  }
205  myTrack->SetLink(FairLink("MVDRiemannTrackCand", i));
206  myTrack->SetTrackCand(*myCand);
207 
208  if (fVerbose > 1) {
209  std::cout << i << ": ";
210  myTrack->Print();
211  }
212 // PndRiemannTrack* newTrack = new ((*fRiemannTrackArray)[i])PndRiemannTrack();
213 // TVectorD origin = myTrack.orig();
214 // newTrack->init(origin[0], origin[1], myTrack.r(), myTrack.dip(), 0);
215 // for (int j = 0; j < myTrack.getNumHits(); j++){
216 // newTrack->addHit(*myTrack.getHit(j));
217 // }
218  }
219  fTrackCandArray->Sort();
220  fTrackArray->Sort();
221 
222  for (int i = 0; i < fTrackCandArray->GetEntriesFast(); i++){
223  PndTrackCand* myCand =(PndTrackCand*)fTrackCandArray->At(i);
224  if (fVerbose > 1)
225  {
226  std::cout << "Track " << i << std::endl;
227  std::cout << "Links: ";
228  ((FairMultiLinkedData*) myCand)->Print();
229  std::cout << std::endl;
230  }
231  }
232 }
int fVerbose
Definition: poormantracks.C:24
void SetVerbose(int val)
Adds one new hit to the array of hits.
Int_t i
Definition: run_full.C:25
void AddHits(TClonesArray *hits, Int_t branchId)
std::vector< PndTrackCand > GetTrackCand()
Returns the hits belonging to track i.
std::vector< TClonesArray * > fHitArray
void SetMaxSZDist(double val)
void SetMinPointDist(double val)
void CalcTimeStamp()
PndLheTrackFinder * trackFinder
void SetMaxPlaneDistance(double val)
void SetSttTubeArray(TClonesArray *SttTubeArray)
void Print()
Definition: PndTrack.cxx:39
void FindTracks()
Main function to start the riemann track finding.
void SetTrackCand(const PndTrackCand &cand)
Definition: PndTrack.h:43
void SetMaxSZChi2(double val)
PndTrack GetPndTrack(int i, double B)
Returns the track with the index i.
void PndMvdRiemannTrackFinderTask::FillHitArray ( )

Definition at line 250 of file PndMvdRiemannTrackFinderTask.cxx.

References At, Double_t, fHitArray, fStopFunctor, fTimeGapFunctor, GetEntriesFast(), and i.

Referenced by Exec().

251 {
252  Double_t eventTime = -1;
253  if (FairRunAna::Instance()->IsTimeStamp()){
254  for (size_t i = 0; i < fHitArray.size(); i++){
255  fHitArray[i]->Delete();
256  }
257 
258  fHitArray[0] = FairRootManager::Instance()->GetData("MVDHitsPixel", fTimeGapFunctor, 10); //FairRootManager::Instance()->GetEventTime() +
259  std::cout << "PixelHits: " << fHitArray[0]->GetEntriesFast() << std::endl;
260  if (fHitArray[0]->GetEntriesFast() > 1){
261  FairTimeStamp* data = (FairTimeStamp*)fHitArray[0]->At(1);
262  eventTime = data->GetTimeStamp();
263  std::cout << "EventTime: " << eventTime << std::endl;
264  fHitArray[1] = FairRootManager::Instance()->GetData("MVDHitsStrip", fStopFunctor, eventTime - 10, fStopFunctor, eventTime + 10);
265  std::cout << "StripHits: " << fHitArray[1]->GetEntriesFast() << std::endl;
266  }
267  }
268 }
Int_t i
Definition: run_full.C:25
cout<< "POINTs for new FwEndCap == "<< tsim-> GetEntriesFast()
Double_t
std::vector< TClonesArray * > fHitArray
cout<<"the Event No is "<< i<< endl;{{if(hit_array->GetEntriesFast()!=mc_array->GetEntriesFast()) continue;PndSdsHit *hit=(PndSdsHit *) hit_array-> At(j)
Definition: anaLmdCluster.C:71
void PndMvdRiemannTrackFinderTask::FinishEvent ( )
virtual

Definition at line 234 of file PndMvdRiemannTrackFinderTask.cxx.

References fTrackArray, and fTrackCandArray.

235 {
236  fTrackCandArray->Delete();
237  fTrackArray->Delete();
238 // fRiemannTrackArray->Delete();
239 }
InitStatus PndMvdRiemannTrackFinderTask::Init ( )
virtual

Definition at line 67 of file PndMvdRiemannTrackFinderTask.cxx.

References fHitBranch, PndSttMapCreator::FillTubeArray(), fInitDone, fPersistence, fRiemannTrackArray, fStopFunctor, fSttParameters, fTimeGapFunctor, fTrackArray, fTrackCandArray, fTubeArray, i, and InitHitArray().

68 {
69  FairRootManager* ioman = FairRootManager::Instance();
70 
71  if ( ! ioman )
72  {
73  std::cout << "-E- PndMvdRiemannTrackFinderTask::Init: "
74  << "RootManager not instantiated!" << std::endl;
75  return kFATAL;
76  }
77 
78  // Get input array
79 // if (FairRunAna::Instance()->IsTimeStamp()){
80 // if (fTimeBasedHitBranch.size() == 0){
81 // std::cout << "-W- PndMvdRiemannTrackFinderTask::Init: " << "No Branch Names given with AddHitBranch(TString branchName)! Standard BranchNames taken!" << std::endl;
82 // fTimeBasedHitBranch.push_back(FairTSBufferParameters("MVDHitsPixel", new TimeGap(), 10));
83 // }
84 // }
85  if (fHitBranch.size() == 0){
86  std::cout << "-W- PndMvdRiemannTrackFinderTask::Init: " << "No Branch Names given with AddHitBranch(TString branchName)! Standard BranchNames taken!" << std::endl;
87  fHitBranch.push_back("MVDHitsPixel");
88  fHitBranch.push_back("MVDHitsStrip");
89  fHitBranch.push_back("STTHit");
90  fHitBranch.push_back("GEMHit");
91  }
92 
93  for (int i = 0; i < (int)fHitBranch.size(); i++){
95  }
96 
97 
98 
99  fTrackCandArray = new TClonesArray("PndTrackCand");
100  ioman->Register("MVDRiemannTrackCand", "MVD", fTrackCandArray, fPersistence);
101 
102  fTrackArray = new TClonesArray("PndTrack");
103  ioman->Register("MVDTrack", "MVD", fTrackArray, fPersistence);
104 
105  fRiemannTrackArray = new TClonesArray("PndRiemannTrack");
106 // ioman->Register("MVDRiemannTrack", "MVD", fRiemannTrackArray, kTRUE);
107 
108 
109  fStopFunctor= new StopTime();
110  fTimeGapFunctor = new TimeGap();
111 
113  fTubeArray = mapper->FillTubeArray();
114 
115  std::cout << "-I- PndMvdRiemannTrackFinderTask: Initialisation successfull" << std::endl;
116  fInitDone = kTRUE;
117  return kSUCCESS;
118 }
Int_t i
Definition: run_full.C:25
TClonesArray * FillTubeArray()
void PndMvdRiemannTrackFinderTask::InitHitArray ( TString  branchName)

Definition at line 241 of file PndMvdRiemannTrackFinderTask.cxx.

References fHitArray.

Referenced by Init().

242 {
243  TClonesArray* tempArray = (TClonesArray*) FairRootManager::Instance()->GetObject(branchName);
244  if (tempArray == 0){
245  std::cout << "-W- PndMvdRiemannTrackFinderTask::Init: " << "No hitArray for BranchName " << branchName.Data() << std::endl;
246  }
247  fHitArray.push_back(tempArray);
248 }
std::vector< TClonesArray * > fHitArray
PndMvdRiemannTrackFinderTask& PndMvdRiemannTrackFinderTask::operator= ( const PndMvdRiemannTrackFinderTask )
delete
void PndMvdRiemannTrackFinderTask::ProduceHits ( )
private
void PndMvdRiemannTrackFinderTask::Register ( )
private
InitStatus PndMvdRiemannTrackFinderTask::ReInit ( )
virtual

Definition at line 60 of file PndMvdRiemannTrackFinderTask.cxx.

61 {
62  InitStatus stat=kSUCCESS;
63  return stat;
64 }
void PndMvdRiemannTrackFinderTask::Reset ( )
private
void PndMvdRiemannTrackFinderTask::SetB ( Double_t  B)
inline

Definition at line 42 of file PndMvdRiemannTrackFinderTask.h.

References fB.

void PndMvdRiemannTrackFinderTask::SetCutChi2H ( TH2F *  hist)
inline

Definition at line 40 of file PndMvdRiemannTrackFinderTask.h.

References fCutChi2H, and hist.

void PndMvdRiemannTrackFinderTask::SetCutDistH ( TH2F *  hist)
inline

Definition at line 39 of file PndMvdRiemannTrackFinderTask.h.

References fCutDistH, and hist.

void PndMvdRiemannTrackFinderTask::SetMaxDist ( double  val)
inline

Definition at line 37 of file PndMvdRiemannTrackFinderTask.h.

References fMaxDist, and val.

Referenced by reco_sttcombi(), run_tracking_sttcombi_timebased(), and runTrackingPid().

37 {fMaxDist = val;}
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
void PndMvdRiemannTrackFinderTask::SetMaxSZChi2 ( double  val)
inline

Definition at line 34 of file PndMvdRiemannTrackFinderTask.h.

References fMaxSZChi2, and val.

34 {fMaxSZChi2 = val;}
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
void PndMvdRiemannTrackFinderTask::SetMaxSZDist ( double  val)
inline

Definition at line 35 of file PndMvdRiemannTrackFinderTask.h.

References fMaxSZDist, and val.

35 {fMaxSZDist = val;}
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
void PndMvdRiemannTrackFinderTask::SetMinPointDist ( double  val)
inline

Definition at line 36 of file PndMvdRiemannTrackFinderTask.h.

References fMinPointDist, and val.

36 {fMinPointDist = val;}
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
void PndMvdRiemannTrackFinderTask::SetParContainers ( )
virtual

Virtual method Init

Definition at line 54 of file PndMvdRiemannTrackFinderTask.cxx.

References fSttParameters, and rtdb.

55 {
56  FairRuntimeDb* rtdb = FairRunAna::Instance()->GetRuntimeDb();
57  fSttParameters = (PndGeoSttPar*) rtdb->getContainer("PndGeoSttPar");
58 }
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
void PndMvdRiemannTrackFinderTask::SetPersistence ( Bool_t  val)
inline

Definition at line 46 of file PndMvdRiemannTrackFinderTask.h.

References fPersistence, and val.

Referenced by reco_sttcombi(), and run_tracking_sttcombi_timebased().

46 { fPersistence = val;};
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
void PndMvdRiemannTrackFinderTask::SetVerbose ( Int_t  verbose)
inline

Definition at line 45 of file PndMvdRiemannTrackFinderTask.h.

References fVerbose, and verbose.

Referenced by reco_sttcombi(), run_tracking_sttcombi_timebased(), and runTrackingPid().

45 { fVerbose = verbose;};
int fVerbose
Definition: poormantracks.C:24
#define verbose

Member Data Documentation

double PndMvdRiemannTrackFinderTask::fB
private

Definition at line 63 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Exec(), and SetB().

TH2F* PndMvdRiemannTrackFinderTask::fCutChi2H
private

Definition at line 73 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Exec(), and SetCutChi2H().

TH2F* PndMvdRiemannTrackFinderTask::fCutDistH
private

Definition at line 72 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Exec(), and SetCutDistH().

int PndMvdRiemannTrackFinderTask::fEventNr
private

Definition at line 56 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Exec().

std::vector<TClonesArray*> PndMvdRiemannTrackFinderTask::fHitArray
private

Definition at line 67 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Exec(), FillHitArray(), and InitHitArray().

std::vector<TString> PndMvdRiemannTrackFinderTask::fHitBranch
private

Definition at line 53 of file PndMvdRiemannTrackFinderTask.h.

Referenced by AddHitBranch(), Exec(), and Init().

Bool_t PndMvdRiemannTrackFinderTask::fInitDone
private

Definition at line 75 of file PndMvdRiemannTrackFinderTask.h.

Referenced by AddHitBranch(), and Init().

double PndMvdRiemannTrackFinderTask::fMaxDist
private

Definition at line 61 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Exec(), and SetMaxDist().

double PndMvdRiemannTrackFinderTask::fMaxSZChi2
private

Definition at line 58 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Exec(), and SetMaxSZChi2().

double PndMvdRiemannTrackFinderTask::fMaxSZDist
private

Definition at line 59 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Exec(), and SetMaxSZDist().

double PndMvdRiemannTrackFinderTask::fMinPointDist
private

Definition at line 60 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Exec(), and SetMinPointDist().

Bool_t PndMvdRiemannTrackFinderTask::fPersistence
private

Definition at line 76 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Init(), and SetPersistence().

TClonesArray* PndMvdRiemannTrackFinderTask::fRiemannTrackArray
private

Definition at line 69 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Init().

BinaryFunctor* PndMvdRiemannTrackFinderTask::fStopFunctor
private

Definition at line 78 of file PndMvdRiemannTrackFinderTask.h.

Referenced by FillHitArray(), and Init().

PndGeoSttPar* PndMvdRiemannTrackFinderTask::fSttParameters
private

Definition at line 81 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Init(), and SetParContainers().

BinaryFunctor* PndMvdRiemannTrackFinderTask::fTimeGapFunctor
private

Definition at line 79 of file PndMvdRiemannTrackFinderTask.h.

Referenced by FillHitArray(), and Init().

TClonesArray* PndMvdRiemannTrackFinderTask::fTrackArray
private

Definition at line 70 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Exec(), FinishEvent(), and Init().

TString PndMvdRiemannTrackFinderTask::fTrackBranch
private

Definition at line 54 of file PndMvdRiemannTrackFinderTask.h.

TClonesArray* PndMvdRiemannTrackFinderTask::fTrackCandArray
private

Definition at line 68 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Exec(), FinishEvent(), and Init().

TClonesArray* PndMvdRiemannTrackFinderTask::fTubeArray
private

Definition at line 82 of file PndMvdRiemannTrackFinderTask.h.

Referenced by Exec(), and Init().


The documentation for this class was generated from the following files: