FairRoot/PandaRoot
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
PndIdealTrackFinder Class Reference

Ideal track finder for all types of tracking detectors The PndIdealTrackFinder combines all hits in given branches into PndTrackCand and calculates the PndTrack based on MC information. More...

#include <PndIdealTrackFinder.h>

Inheritance diagram for PndIdealTrackFinder:
PndPersistencyTask PndCloneGenerator

Public Member Functions

 PndIdealTrackFinder ()
 
virtual ~PndIdealTrackFinder ()
 
virtual InitStatus Init ()
 
virtual void AddBranchName (TString name)
 Search for tracks only in given branches. If no BranchName is given all tracking detectors are taken. More...
 
virtual void AddBranchName (TString name, TString mcName)
 Search for tracks only in given branches. If no BranchName is given all tracking detectors are taken. More...
 
virtual void SetOutputBranchName (TString name)
 
virtual void Exec (Option_t *opt)
 
void SetMomentumSmearing (Double_t sigmax=-1., Double_t sigmay=-1., Double_t sigmaz=-1.)
 
void SetRelativeMomentumSmearing (Double_t dpop=-1.)
 
void SetVertexSmearing (Double_t sigmax=-1., Double_t sigmay=-1., Double_t sigmaz=-1.)
 
void SetTrackingEfficiency (Double_t eff=1.)
 
void SetTrackSelector (TString selector)
 
void SetPersistence (Bool_t persistence)
 
void SetPersistency (Bool_t val=kTRUE)
 
Bool_t GetPersistency ()
 

Protected Member Functions

virtual void CreateTrackCands ()
 
virtual void CreateTracks ()
 
virtual void FilterTrackCands ()
 
virtual FairMCPoint * GetFairMCPoint (TString hitBranch, FairMultiLinkedData_Interface *links, FairMultiLinkedData &array)
 
virtual void SmearVector (TVector3 &vec, const TVector3 &sigma)
 
 ClassDef (PndIdealTrackFinder, 2)
 

Protected Attributes

TString fOutBranchName
 
TClonesArray * fTrackCand
 
TClonesArray * fTrack
 
TClonesArray * fMCTrack
 
PndTrackFunctorfTrackSelector
 
std::map< TString, TClonesArray * > fBranchMap
 
std::vector< TStringfBranchNames
 
std::map< FairLink, PndTrackCandfTrackCandMap
 
std::map< FairLink, FairMCPoint > fFirstPointMap
 
std::map< FairLink, FairMCPoint > fLastPointMap
 
std::map< TString, TStringfPointBranchMap
 
TDatabasePDG * fPdg
 ! Particle DB More...
 
Int_t fHitCount
 
TVector3 fMomSigma
 Momentum smearing sigma [GeV]. More...
 
Double_t fDPoP
 Relative momentum Smearing. More...
 
Bool_t fRelative
 flag More...
 
TVector3 fVtxSigma
 Vertex smearing sigma [cm]. More...
 
Double_t fEfficiency
 Tracking efficiency - if (0 <= e < 1), some tracks will be discarded. More...
 

Detailed Description

Ideal track finder for all types of tracking detectors The PndIdealTrackFinder combines all hits in given branches into PndTrackCand and calculates the PndTrack based on MC information.

PndIdealTrackFinder.h

Author
Tobias Stockmanns t.sto.nosp@m.ckma.nosp@m.nns@f.nosp@m.z-ju.nosp@m.elich.nosp@m..de
Date
Apr 12, 2010

Definition at line 25 of file PndIdealTrackFinder.h.

Constructor & Destructor Documentation

PndIdealTrackFinder::PndIdealTrackFinder ( )

Definition at line 22 of file PndIdealTrackFinder.cxx.

References fPointBranchMap, and PndPersistencyTask::SetPersistency().

22  :
23  fOutBranchName("IdealTrack"), fTrackCand(0), fTrack(0), fMCTrack(0), fTrackSelector(0), fPdg(0), fHitCount(0), fMomSigma(0,0,0), fDPoP(0.), fRelative (kFALSE), fVtxSigma(0,0,0), fEfficiency(1.)
24 {
25  fPointBranchMap["MVDHitsPixel"] = "MVDPoint";
26  fPointBranchMap["MVDHitsStrip"] = "MVDPoint";
27  fPointBranchMap["STTHit"] = "STTPoint";
28  fPointBranchMap["GEMHit"] = "GEMPoint";
29  fPointBranchMap["FTSHit"] = "FTSPoint";
30 
31  fPointBranchMap["SciTHit"] = "SciTPoint";
32  fPointBranchMap["MdtHit"] = "MdtPoint";
33 
34  fPointBranchMap["DircHit"] = ""; // no FairLinks Provided!
35  fPointBranchMap["FTofHit"] = ""; // no FairLinks Provided!
36  fPointBranchMap["RichHit"] = ""; // no FairLinks Provided!
37 
38  SetPersistency(kTRUE);
39 }
TClonesArray * fTrackCand
TDatabasePDG * fPdg
! Particle DB
void SetPersistency(Bool_t val=kTRUE)
std::map< TString, TString > fPointBranchMap
PndTrackFunctor * fTrackSelector
Double_t fDPoP
Relative momentum Smearing.
TVector3 fMomSigma
Momentum smearing sigma [GeV].
Double_t fEfficiency
Tracking efficiency - if (0 <= e < 1), some tracks will be discarded.
TVector3 fVtxSigma
Vertex smearing sigma [cm].
PndIdealTrackFinder::~PndIdealTrackFinder ( )
virtual

Definition at line 41 of file PndIdealTrackFinder.cxx.

References fTrackSelector.

41  {
42  if (fTrackSelector != 0)
43  delete fTrackSelector;
44 }
PndTrackFunctor * fTrackSelector

Member Function Documentation

virtual void PndIdealTrackFinder::AddBranchName ( TString  name)
inlinevirtual

Search for tracks only in given branches. If no BranchName is given all tracking detectors are taken.

Definition at line 33 of file PndIdealTrackFinder.h.

References fBranchNames.

Referenced by idealbarreltracking(), idealforwardtracking(), Init(), PndMasterRecoTask::PndMasterRecoTask(), reco_complete(), reco_complete_newSTT(), recoqa_ca(), recoqa_complete(), and trackingQANewLinks().

virtual void PndIdealTrackFinder::AddBranchName ( TString  name,
TString  mcName 
)
inlinevirtual

Search for tracks only in given branches. If no BranchName is given all tracking detectors are taken.

Definition at line 34 of file PndIdealTrackFinder.h.

References fBranchNames, fPointBranchMap, and name.

PndIdealTrackFinder::ClassDef ( PndIdealTrackFinder  ,
 
)
protected
void PndIdealTrackFinder::CreateTrackCands ( )
protectedvirtual

Definition at line 103 of file PndIdealTrackFinder.cxx.

References fBranchMap, fFirstPointMap, fHitCount, fLastPointMap, fTrackCandMap, GetFairMCPoint(), i, point, and TString.

Referenced by PndCloneGenerator::Exec(), and Exec().

104 {
105  fHitCount = 0;
106  for (std::map<TString, TClonesArray*>::iterator iter = fBranchMap.begin(); iter != fBranchMap.end(); iter++){
107  //std::cout << "AddLinks from Branch: " << iter->first << std::endl;
108  for (int i = 0; i < iter->second->GetEntriesFast(); i++){
109 
110  FairMultiLinkedData array;
111  FairMultiLinkedData_Interface* links = (FairMultiLinkedData_Interface*)iter->second->At(i);
112  TString hitBranch = iter->first;
113 
114  FairMCPoint *point = GetFairMCPoint(hitBranch, links, array);
115  if (point == 0) {
116  continue;
117  }
118  FairMCPoint firstpoint = *point;
119  FairMCPoint lastpoint = *point;
120 
121  double tof = point->GetTime();
122  delete(point);
123 
124  for (int ipnt = 1; ipnt < array.GetNLinks(); ipnt++){
125  point = (FairMCPoint *) FairRootManager::Instance()->GetCloneOfLinkData(array.GetLink(ipnt));
126  tof += point->GetTime();
127  // std::cout << ipnt << " " << tof << std::endl;
128  if( point->GetTime() < firstpoint.GetTime()) firstpoint = *point;
129  if( point->GetTime() > lastpoint.GetTime()) lastpoint = *point;
130  delete(point);
131  }
132  tof /= array.GetNLinks();
133  // std::cout << i << " " << tof << std::endl;
134  // .............................................
135  FairMultiLinkedData mctracks = links->GetLinksWithType(FairRootManager::Instance()->GetBranchId("MCTrack"));
136  for (int trackIndex = 0; trackIndex < mctracks.GetNLinks(); trackIndex++){
137  if (!fTrackCandMap.count(mctracks.GetLink(trackIndex))){
138  fTrackCandMap[mctracks.GetLink(trackIndex)] = PndTrackCand();
139  fTrackCandMap[mctracks.GetLink(trackIndex)].SetInsertHistory(kTRUE);
140  fFirstPointMap[mctracks.GetLink(trackIndex)] = firstpoint;
141  // fFirstPointMap[mctracks.GetLink(trackIndex)].SetInsertHistory(kTRUE);
142  fLastPointMap[mctracks.GetLink(trackIndex)] = lastpoint;
143  // fLastPointMap[mctracks.GetLink(trackIndex)].SetInsertHistory(kTRUE);
144  }
145  else {
146  FairMCPoint tmpfirstpoint = fFirstPointMap[mctracks.GetLink(trackIndex)];
147  if(firstpoint.GetTime() < tmpfirstpoint.GetTime()) fFirstPointMap[mctracks.GetLink(trackIndex)] = firstpoint;
148  FairMCPoint tmplastpoint = fLastPointMap[mctracks.GetLink(trackIndex)];
149  if(lastpoint.GetTime() > tmplastpoint.GetTime()) fLastPointMap[mctracks.GetLink(trackIndex)] = lastpoint;
150  }
151  FairLink link(-1, FairRootManager::Instance()->GetEntryNr(),FairRootManager::Instance()->GetBranchId(iter->first),i);
152  //std::cout << "CreateTrackCands " << mctracks.GetLink(trackIndex) << " : " << link << std::endl;
153  fTrackCandMap[mctracks.GetLink(trackIndex)].SetInsertHistory(kTRUE);
154  // fTrackCandMap[mctracks.GetLink(trackIndex)].AddHit(link, fHitCount++); //todo Rho is not properly calculated!
155  fTrackCandMap[mctracks.GetLink(trackIndex)].AddHit(link, tof);
156  }
157  }
158  }
159 }
Int_t i
Definition: run_full.C:25
std::map< FairLink, FairMCPoint > fFirstPointMap
TClonesArray * point
Definition: anaLmdDigi.C:29
std::map< TString, TClonesArray * > fBranchMap
virtual FairMCPoint * GetFairMCPoint(TString hitBranch, FairMultiLinkedData_Interface *links, FairMultiLinkedData &array)
std::map< FairLink, FairMCPoint > fLastPointMap
std::map< FairLink, PndTrackCand > fTrackCandMap
void PndIdealTrackFinder::CreateTracks ( )
protectedvirtual

Definition at line 175 of file PndIdealTrackFinder.cxx.

References fBranchMap, fDPoP, fEfficiency, fFirstPointMap, fLastPointMap, fMomSigma, fPdg, fRelative, fTrack, fTrackCand, fTrackCandMap, fVtxSigma, PndTrackCandHit::GetDetId(), PndTrackCandHit::GetHitId(), PndTrackCand::GetNHits(), PndMCTrack::GetPdgCode(), PndTrackCand::GetSortedHit(), PndGemMCPoint::PositionOut(), PndTrackCand::setMcTrackId(), and SmearVector().

Referenced by PndCloneGenerator::Exec(), and Exec().

176 {
177  for (std::map<FairLink, PndTrackCand>::iterator iter = fTrackCandMap.begin(); iter != fTrackCandMap.end(); iter++){
178  PndTrackCand* myTrackCand = new((*fTrackCand)[fTrackCand->GetEntriesFast()]) PndTrackCand(iter->second);
179  myTrackCand->setMcTrackId(iter->first.GetIndex());
180  myTrackCand->AddLink(iter->first);
181  myTrackCand->SetTimeStamp(FairRootManager::Instance()->GetEventTime());
182  //std::cout << myTrackCand->GetLinksWithType(FairRootManager::Instance()->GetBranchId("MCTrack")) << " : " << std::endl;
183  //myTrackCand->Print();
184  //std::cout << *myTrackCand << std::endl;
185 
186  // ....... track
187  PndMCTrack *mc = (PndMCTrack *) FairRootManager::Instance()->GetCloneOfLinkData(iter->first);
188  int charge = 0;
189  if (mc->GetPdgCode()<100000000) charge = (Int_t)TMath::Sign(1.0, ((TParticlePDG*) fPdg->GetParticle(mc->GetPdgCode()))->Charge());
190  else charge = 1;
191 
192 
193  if(0 < fEfficiency && fEfficiency < 1){
194  if(gRandom->Rndm() > fEfficiency) continue;
195  }
196 
197  // first
198  FairMCPoint firstpoint = fFirstPointMap[iter->first];
199  TVector3 firstpos(0, 0, 0), firstmom(0, 0, 0);
200  if(myTrackCand->GetSortedHit(0).GetDetId() == FairRootManager::Instance()->GetBranchId("GEMHit")) {
201  TClonesArray *gemhitarray = fBranchMap["GEMHit"];
202  Int_t hitid = myTrackCand->GetSortedHit(0).GetHitId();
203  PndGemHit *gemhit = (PndGemHit*) gemhitarray->At(hitid);
204  FairMultiLinkedData gemhitlink = gemhit->GetLinksWithType(FairRootManager::Instance()->GetBranchId("GEMPoint"));
205  PndGemMCPoint *gempoint = (PndGemMCPoint *) FairRootManager::Instance()->GetCloneOfLinkData(gemhitlink.GetLink(0));
206 
207  TVector3 posin(0, 0, 0), posout(0, 0, 0);
208  gempoint->Position(posin);
209  gempoint->PositionOut(posout);
210  firstpos = 0.5 * (posin + posout);
211  }
212  else firstpoint.Position(firstpos);
213 
214  SmearVector(firstpos, fVtxSigma);
215  firstpoint.Momentum(firstmom);
216 
217  if (fRelative) fMomSigma.SetXYZ(fDPoP*firstmom.Mag(),fDPoP*firstmom.Mag(),fDPoP*firstmom.Mag());
218  SmearVector(firstmom, fMomSigma);
219  FairTrackParP firstPar(firstpos, firstmom,
221  charge, firstpos,
222  TVector3(1.,0.,0.), TVector3(0.,1.,0.));
223  // last
224  FairMCPoint lastpoint = fLastPointMap[iter->first];
225  TVector3 lastpos(0, 0, 0), lastmom(0, 0, 0);
226 
227  if(myTrackCand->GetSortedHit(myTrackCand->GetNHits() - 1).GetDetId() == FairRootManager::Instance()->GetBranchId("GEMHit")) {
228  TClonesArray *gemhitarray = fBranchMap["GEMHit"];
229  Int_t hitid = myTrackCand->GetSortedHit(myTrackCand->GetNHits() - 1).GetHitId();
230  PndGemHit *gemhit = (PndGemHit*) gemhitarray->At(hitid);
231  FairMultiLinkedData gemhitlink = gemhit->GetLinksWithType(FairRootManager::Instance()->GetBranchId("GEMPoint"));
232  PndGemMCPoint *gempoint = (PndGemMCPoint *) FairRootManager::Instance()->GetCloneOfLinkData(gemhitlink.GetLink(0));
233 
234  TVector3 posin(0, 0, 0), posout(0, 0, 0);
235  gempoint->Position(posin);
236  gempoint->PositionOut(posout);
237  lastpos = 0.5 * (posin + posout);
238  }
239  else lastpoint.Position(lastpos);
240 
241  SmearVector(lastpos, fVtxSigma);
242  lastpoint.Momentum(lastmom);
243  SmearVector(lastmom, fMomSigma);
244  FairTrackParP lastPar(lastpos, lastmom,
246  charge, lastpos,
247  TVector3(1.,0.,0.), TVector3(0.,1.,0.));
248 
249 
250 
251  new((*fTrack)[fTrack->GetEntriesFast()]) PndTrack(firstPar, lastPar, *myTrackCand, 0,0,1,mc->GetPdgCode(), -1,-1);
252  }
253 }
TClonesArray * fTrackCand
virtual void SmearVector(TVector3 &vec, const TVector3 &sigma)
TDatabasePDG * fPdg
! Particle DB
std::map< FairLink, FairMCPoint > fFirstPointMap
Int_t GetPdgCode() const
Definition: PndMCTrack.h:73
PndTrackCandHit GetSortedHit(UInt_t i)
Definition: PndTrackCand.h:54
void setMcTrackId(int i)
Definition: PndTrackCand.h:72
void PositionOut(TVector3 &pos) const
Definition: PndGemMCPoint.h:94
Double_t fDPoP
Relative momentum Smearing.
TVector3 fMomSigma
Momentum smearing sigma [GeV].
std::map< TString, TClonesArray * > fBranchMap
UInt_t GetNHits() const
Definition: PndTrackCand.h:59
std::map< FairLink, FairMCPoint > fLastPointMap
Double_t fEfficiency
Tracking efficiency - if (0 <= e < 1), some tracks will be discarded.
Int_t GetHitId() const
Int_t GetDetId() const
TVector3 fVtxSigma
Vertex smearing sigma [cm].
std::map< FairLink, PndTrackCand > fTrackCandMap
void PndIdealTrackFinder::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Reimplemented in PndCloneGenerator.

Definition at line 89 of file PndIdealTrackFinder.cxx.

References CreateTrackCands(), CreateTracks(), FilterTrackCands(), fTrack, fTrackCand, and fTrackCandMap.

90 {
91  fTrackCand->Delete();
92  fTrack->Delete();
93  fTrackCandMap.clear();
94 
95 // std::cout << "Event #" << FairRootManager::Instance()->GetEntryNr() << std::endl;
98 
99 // std::cout << "PndIdealTrackFinder:Found Tracks:" << std::endl;
100  CreateTracks();
101 }
TClonesArray * fTrackCand
virtual void CreateTrackCands()
virtual void FilterTrackCands()
std::map< FairLink, PndTrackCand > fTrackCandMap
void PndIdealTrackFinder::FilterTrackCands ( )
protectedvirtual

Definition at line 161 of file PndIdealTrackFinder.cxx.

References fTrackCandMap, and fTrackSelector.

Referenced by Exec().

162 {
163  if (fTrackSelector == 0){
164  return;
165  }
166  for (std::map<FairLink, PndTrackCand>::iterator iter = fTrackCandMap.begin(); iter != fTrackCandMap.end();){
167  if (!(*fTrackSelector)(iter->second.GetPointerToLinks(), true)){
168  fTrackCandMap.erase(iter++);
169  } else {
170  ++iter;
171  }
172  }
173 }
PndTrackFunctor * fTrackSelector
std::map< FairLink, PndTrackCand > fTrackCandMap
FairMCPoint * PndIdealTrackFinder::GetFairMCPoint ( TString  hitBranch,
FairMultiLinkedData_Interface *  links,
FairMultiLinkedData &  array 
)
protectedvirtual

Definition at line 255 of file PndIdealTrackFinder.cxx.

References fPointBranchMap.

Referenced by CreateTrackCands(), and PndCloneGenerator::SetFirstLastHit().

256 {
257  // get the mc point(s) from each reco hit ......
258  FairMultiLinkedData mcpoints = links->GetLinksWithType(FairRootManager::Instance()->GetBranchId(fPointBranchMap[hitBranch]));
259  // std::cout << "hit " << i << " connected to points " << mvdpoints.GetNLinks() << " " << sttpoints.GetNLinks() << " " << gempoints.GetNLinks() << std::endl;
260 
261  // There seems to be a bug with ghost hits from the GEM stations. If more than one
262  // MC point is associated to a hit, there is a good chance for false assignments
263  // leading to wrong tracks. For the moment, skip hits with more than 1 GEM point.
264 
265  if (hitBranch == "GEMHit" && mcpoints.GetNLinks() > 1) return 0;
266 // if ((*iter).first == "MVDHitsStrip" && mvdpoints.GetNLinks() > 1) return 0;
267 
268  array = mcpoints;
269 
270 
271  if (array.GetNLinks() == 0){
272 
273  return 0;
274  }
275  return (FairMCPoint *) FairRootManager::Instance()->GetCloneOfLinkData(array.GetLink(0));
276 }
std::map< TString, TString > fPointBranchMap
Bool_t PndPersistencyTask::GetPersistency ( )
inlineinherited

Definition at line 32 of file PndPersistencyTask.h.

References PndPersistencyTask::fPersistency.

Referenced by PndLmdPixelHitProducerFast::GetPersistance(), PndMdtDigitization::Init(), PndMdtHitProducerIdeal::Init(), PndMdtClusterTask::Init(), PndFtsHitProducerRealFast::Init(), PndSttHitProducerRealFast::Init(), PndDiscTaskReconstruction::Init(), PndRichHitProducer::Init(), PndSttHelixHitProducer::Init(), PndDiscTaskPID::Init(), Init(), PndSttMvdGemTracking::Init(), PndMdtTrkProducer::Init(), PndFtsHitProducerRealFull::Init(), PndLmdPixelClusterTask::Init(), PndSttHitProducerRealFull::Init(), PndLmdStripClusterTask::Init(), PndEmcApdHitProducer::Init(), PndMissingPzCleanerTask::Init(), PndEmcMakeRecoHit::Init(), PndEmcMakeClusterOnline::Init(), PndTrackSmearTask::Init(), PndEmcFWEndcapTimebasedWaveforms::Init(), PndSttHitProducerIdeal::Init(), PndEmcFWEndcapDigi::Init(), PndFtsHitProducerIdeal::Init(), PndEmcMakeCluster::Init(), PndMdtPointsToWaveform::Init(), PndDiscTaskDigitization::Init(), PndEmcMakeDigi::Init(), PndSdsTimeWalkCorrTask::Init(), PndLmdPixelHitProducerFast::Init(), PndDrcHitFinder::Init(), PndRichHitFinder::Init(), PndEmcMakeCorr::Init(), PndFtofHitProducerIdeal::Init(), PndEmcHitsToWaveform::Init(), PndSciTDigiTask::Init(), PndDrcHitProducerIdeal::Init(), PndSdsHitProducerIdeal::Init(), PndSciTHitProducerIdeal::Init(), PndEmcHitProducer::Init(), PndRecoMultiKalmanTask2::Init(), PndDrcHitProducerReal::Init(), PndDskFLGHitProducerIdeal::Init(), PndEmcTmpWaveformToDigi::Init(), PndDrcDigiTask::Init(), PndEmcWaveformToDigi::Init(), PndSttMatchTracks::Init(), PndEmcWaveformToCalibratedDigi::Init(), PndTrkTracking2::Init(), PndSttFindTracks::Init(), PndEmcMultiWaveformToCalibratedDigi::Init(), PndDrcTimeDigiTask::Init(), PndRecoKalmanTask2::Init(), PndEmcExpClusterSplitter::Init(), PndSdsNoiseProducer::Init(), PndFtsHoughTrackerTask::Init(), PndEmcPhiBumpSplitter::Init(), PndSdsHybridHitProducer::Init(), PndSdsIdealRecoTask::Init(), PndRecoMultiKalmanTask::Init(), PndSdsIdealClusterTask::Init(), PndRecoKalmanTask::Init(), PndSdsStripHitProducerDif::Init(), PndSdsStripHitProducer::Init(), PndGemDigitize::Init(), PndGemFindHits::Init(), PndSdsPixelClusterTask::Init(), PndSdsStripClusterTask::Init(), PndMvdGemTrackFinderOnHits::Init(), PndBarrelTrackFinder::Init(), PndEmcFullDigiTask::PndEmcFullDigiTask(), PndEmcMakeBump::PndEmcMakeBump(), PndUnassignedHitsTask::RegisterBranches(), PndMvdClusterTask::SetPersistance(), PndMvdDigiTask::SetPersistance(), PndEmcMakeBump::SetStorageOfData(), and PndEmcFullDigiTask::StoreDigi().

32 { return fPersistency; }
InitStatus PndIdealTrackFinder::Init ( )
virtual

Virtual method Init

Definition at line 47 of file PndIdealTrackFinder.cxx.

References AddBranchName(), fBranchMap, fBranchNames, fMCTrack, fOutBranchName, fPdg, fPointBranchMap, fTrack, fTrackCand, fTrackSelector, PndPersistencyTask::GetPersistency(), and i.

48 {
49 
50  FairRootManager* ioman = FairRootManager::Instance();
51  if (!ioman) {
52  std::cout << "-E- PndMCTestHitCompare::Init: "
53  << "RootManager not instantiated!" << std::endl;
54  return kFATAL;
55  }
56 
57  if (fBranchNames.size() == 0){
58  // Use hits of all tracking subsystems if nothing is given
59  AddBranchName("MVDHitsPixel");
60  AddBranchName("MVDHitsStrip");
61  AddBranchName("STTHit");
62  AddBranchName("GEMHit");
63  AddBranchName("FTSHit");
64  }
65 
66  for (size_t i = 0; i < fBranchNames.size(); i++){
67  if (ioman->GetObject(fBranchNames[i]) != 0){
68  fBranchMap[fBranchNames[i]] = (TClonesArray*)ioman->GetObject(fBranchNames[i]);
69  ioman->GetObject(fPointBranchMap[fBranchNames[i]]); // initialise the used FairMcPoint Branches
70  }
71  }
72  fMCTrack = (TClonesArray*)ioman->GetObject("MCTrack");
73 
74 
75  fTrackCand = new TClonesArray("PndTrackCand");
76  ioman->Register(fOutBranchName + "Cand", "MC", fTrackCand, GetPersistency());
77  fTrack = new TClonesArray("PndTrack");
78  ioman->Register(fOutBranchName, "MC", fTrack, GetPersistency());
79 
80  if (fTrackSelector == 0){
81  std::cout << "-W- PndIdealTrackFinder::Init() no fTrackSelector set! All possible tracks will be taken!" << std::endl;
82  }
83 
84  fPdg = new TDatabasePDG();
85 
86  return kSUCCESS;
87 }
TClonesArray * fTrackCand
Int_t i
Definition: run_full.C:25
TDatabasePDG * fPdg
! Particle DB
std::map< TString, TString > fPointBranchMap
std::vector< TString > fBranchNames
PndTrackFunctor * fTrackSelector
std::map< TString, TClonesArray * > fBranchMap
virtual void AddBranchName(TString name)
Search for tracks only in given branches. If no BranchName is given all tracking detectors are taken...
void PndIdealTrackFinder::SetMomentumSmearing ( Double_t  sigmax = -1.,
Double_t  sigmay = -1.,
Double_t  sigmaz = -1. 
)
inline

Definition at line 44 of file PndIdealTrackFinder.h.

References fabs(), fMomSigma, and fRelative.

44  {
45  fMomSigma.SetXYZ(fabs(sigmax),fabs(sigmay),fabs(sigmaz));
46  fRelative=kFALSE;
47  }; // in GeV
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
TVector3 fMomSigma
Momentum smearing sigma [GeV].
virtual void PndIdealTrackFinder::SetOutputBranchName ( TString  name)
inlinevirtual
void PndIdealTrackFinder::SetPersistence ( Bool_t  persistence)
inline
void PndPersistencyTask::SetPersistency ( Bool_t  val = kTRUE)
inlineinherited

Definition at line 31 of file PndPersistencyTask.h.

References PndPersistencyTask::fPersistency, and val.

Referenced by barrelTrackFinder(), digi_complete(), digi_complete_newSTT(), digiOnly_complete(), PndBarrelTrackFinder::PndBarrelTrackFinder(), PndCATracking::PndCATracking(), PndDrcHitFinder::PndDrcHitFinder(), PndEmc2DLocMaxFinder::PndEmc2DLocMaxFinder(), PndEmcExpClusterSplitter::PndEmcExpClusterSplitter(), PndEmcFullDigiTask::PndEmcFullDigiTask(), PndEmcFWEndcapDigi::PndEmcFWEndcapDigi(), PndEmcFWEndcapTimebasedWaveforms::PndEmcFWEndcapTimebasedWaveforms(), PndEmcHitProducer::PndEmcHitProducer(), PndEmcHitsToWaveform::PndEmcHitsToWaveform(), PndEmcMakeBump::PndEmcMakeBump(), PndEmcMakeCluster::PndEmcMakeCluster(), PndEmcMakeClusterOnline::PndEmcMakeClusterOnline(), PndEmcMakeDigi::PndEmcMakeDigi(), PndEmcMakeRecoHit::PndEmcMakeRecoHit(), PndEmcMultiWaveformToCalibratedDigi::PndEmcMultiWaveformToCalibratedDigi(), PndEmcPhiBumpSplitter::PndEmcPhiBumpSplitter(), PndEmcTmpWaveformToDigi::PndEmcTmpWaveformToDigi(), PndEmcWaveformToCalibratedDigi::PndEmcWaveformToCalibratedDigi(), PndEmcWaveformToDigi::PndEmcWaveformToDigi(), PndFtofHitProducerIdeal::PndFtofHitProducerIdeal(), PndFtsCATracking::PndFtsCATracking(), PndFtsHitProducerIdeal::PndFtsHitProducerIdeal(), PndFtsHitProducerRealFast::PndFtsHitProducerRealFast(), PndFtsHitProducerRealFull::PndFtsHitProducerRealFull(), PndFtsHoughTrackerTask::PndFtsHoughTrackerTask(), PndGemDigitize::PndGemDigitize(), PndGemFindHits::PndGemFindHits(), PndIdealTrackFinder(), PndLmdPixelClusterTask::PndLmdPixelClusterTask(), PndLmdPixelHitProducerFast::PndLmdPixelHitProducerFast(), PndMdtClusterTask::PndMdtClusterTask(), PndMdtDigitization::PndMdtDigitization(), PndMdtHitProducerIdeal::PndMdtHitProducerIdeal(), PndMdtPointsToWaveform::PndMdtPointsToWaveform(), PndMdtTrkProducer::PndMdtTrkProducer(), PndMissingPzCleanerTask::PndMissingPzCleanerTask(), PndMvdGemTrackFinderOnHits::PndMvdGemTrackFinderOnHits(), PndMvdHitProducerIdeal::PndMvdHitProducerIdeal(), PndMvdPixelClusterTask::PndMvdPixelClusterTask(), PndMvdTimeWalkCorrTask::PndMvdTimeWalkCorrTask(), PndMvdToPix4ClusterTask::PndMvdToPix4ClusterTask(), PndRecoKalmanTask::PndRecoKalmanTask(), PndRecoKalmanTask2::PndRecoKalmanTask2(), PndRecoMultiKalmanTask::PndRecoMultiKalmanTask(), PndRecoMultiKalmanTask2::PndRecoMultiKalmanTask2(), PndRichHitFinder::PndRichHitFinder(), PndRichHitProducer::PndRichHitProducer(), PndSciTDigiTask::PndSciTDigiTask(), PndSciTHitProducerIdeal::PndSciTHitProducerIdeal(), PndSdsHitProducerIdeal::PndSdsHitProducerIdeal(), PndSdsHybridHitProducer::PndSdsHybridHitProducer(), PndSdsIdealClusterTask::PndSdsIdealClusterTask(), PndSdsIdealRecoTask::PndSdsIdealRecoTask(), PndSdsNoiseProducer::PndSdsNoiseProducer(), PndSdsPixelClusterTask::PndSdsPixelClusterTask(), PndSdsStripClusterTask::PndSdsStripClusterTask(), PndSdsStripHitProducer::PndSdsStripHitProducer(), PndSdsTimeWalkCorrTask::PndSdsTimeWalkCorrTask(), PndSttFindTracks::PndSttFindTracks(), PndSttHelixHitProducer::PndSttHelixHitProducer(), PndSttHitProducerIdeal::PndSttHitProducerIdeal(), PndSttHitProducerRealFast::PndSttHitProducerRealFast(), PndSttHitProducerRealFull::PndSttHitProducerRealFull(), PndSttMatchTracks::PndSttMatchTracks(), PndSttMvdGemTracking::PndSttMvdGemTracking(), PndTrackSmearTask::PndTrackSmearTask(), PndTrkTracking2::PndTrkTracking2(), reco(), reco_complete(), reco_complete_gf2(), reco_complete_newSTT(), reco_complete_sec(), recoideal_complete(), PndMvdClusterTask::SetPersistance(), PndMvdDigiTask::SetPersistance(), PndLmdPixelHitProducerFast::SetPersistance(), PndSdsHitProducerIdeal::SetPersistance(), PndSttMvdGemTracking::SetPersistenc(), PndMdtClusterTask::SetPersistence(), PndSttHelixHitProducer::SetPersistence(), PndMissingPzCleanerTask::SetPersistence(), PndFtsHitProducerRealFast::SetPersistence(), PndFtsHitProducerRealFull::SetPersistence(), PndSttHitProducerIdeal::SetPersistence(), PndSttHitProducerRealFull::SetPersistence(), PndSttHitProducerRealFast::SetPersistence(), PndFtsHitProducerIdeal::SetPersistence(), PndTrackSmearTask::SetPersistence(), PndSciTHitProducerIdeal::SetPersistence(), SetPersistence(), PndSttMatchTracks::SetPersistence(), PndSttFindTracks::SetPersistence(), PndFtsHoughTrackerTask::SetPersistence(), PndTrkTracking2::SetPersistence(), PndEmcMakeRecoHit::SetStorageOfData(), PndEmcMakeClusterOnline::SetStorageOfData(), PndEmcFWEndcapDigi::SetStorageOfData(), PndEmcFWEndcapTimebasedWaveforms::SetStorageOfData(), PndEmcMakeDigi::SetStorageOfData(), PndMdtPointsToWaveform::SetStorageOfData(), PndEmc2DLocMaxFinder::SetStorageOfData(), PndEmcMakeCluster::SetStorageOfData(), PndEmcHitsToWaveform::SetStorageOfData(), PndEmcMakeBump::SetStorageOfData(), PndEmcTmpWaveformToDigi::SetStorageOfData(), PndEmcWaveformToDigi::SetStorageOfData(), PndEmcWaveformToCalibratedDigi::SetStorageOfData(), PndEmcMultiWaveformToCalibratedDigi::SetStorageOfData(), PndEmcExpClusterSplitter::SetStorageOfData(), PndEmcPhiBumpSplitter::SetStorageOfData(), standard_tracking(), and PndEmcFullDigiTask::StoreDigi().

31 { fPersistency = val; }
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
void PndIdealTrackFinder::SetRelativeMomentumSmearing ( Double_t  dpop = -1.)
inline

Definition at line 48 of file PndIdealTrackFinder.h.

References fabs(), fDPoP, and fRelative.

Referenced by PndMasterRecoIdealTask::PndMasterRecoIdealTask(), PndMasterRecoTask::PndMasterRecoTask(), reco_complete(), reco_complete_gf2(), reco_complete_newSTT(), reco_complete_sec(), reco_rich(), and recoideal_complete().

48  {
49  fDPoP=fabs(dpop);
50  fRelative=kTRUE;
51  }; // in GeV
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
Double_t fDPoP
Relative momentum Smearing.
void PndIdealTrackFinder::SetTrackingEfficiency ( Double_t  eff = 1.)
inline
void PndIdealTrackFinder::SetTrackSelector ( TString  selector)
inline

< The track selector decides if a track is taken or discarded. You can set them via a string. Valid strings can be found in PndTrackFunctor.h

Definition at line 59 of file PndIdealTrackFinder.h.

References fTrackSelector, and PndTrackFunctor::make_PndTrackFunctor().

Referenced by idealbarreltracking(), idealforwardtracking(), PndMasterRecoIdealTask::PndMasterRecoIdealTask(), PndMasterRecoTask::PndMasterRecoTask(), reco_complete(), reco_complete_gf2(), reco_complete_newSTT(), reco_complete_sec(), reco_rich(), and recoideal_complete().

59  {
61  }
static PndTrackFunctor * make_PndTrackFunctor(std::string functorName)
PndTrackFunctor * fTrackSelector
void PndIdealTrackFinder::SetVertexSmearing ( Double_t  sigmax = -1.,
Double_t  sigmay = -1.,
Double_t  sigmaz = -1. 
)
inline

Definition at line 52 of file PndIdealTrackFinder.h.

References fabs(), and fVtxSigma.

Referenced by PndMasterRecoIdealTask::PndMasterRecoIdealTask(), PndMasterRecoTask::PndMasterRecoTask(), reco_complete(), reco_complete_gf2(), reco_complete_newSTT(), reco_complete_sec(), reco_rich(), and recoideal_complete().

52  {
53  fVtxSigma.SetXYZ(fabs(sigmax),fabs(sigmay),fabs(sigmaz));
54  }; // in cm
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
TVector3 fVtxSigma
Vertex smearing sigma [cm].
void PndIdealTrackFinder::SmearVector ( TVector3 &  vec,
const TVector3 &  sigma 
)
protectedvirtual

Definition at line 278 of file PndIdealTrackFinder.cxx.

References Double_t.

Referenced by CreateTracks().

279 {
280  // gaussian smearing
281  Double_t rannn=0.;
282  rannn = gRandom->Gaus(vec.X(),sigma.X());
283  vec.SetX(rannn);
284 
285  rannn = gRandom->Gaus(vec.Y(),sigma.Y());
286  vec.SetY(rannn);
287 
288  rannn = gRandom->Gaus(vec.Z(),sigma.Z());
289  vec.SetZ(rannn);
290 
291  return;
292 }
Double_t sigma[nsteps]
Definition: dedx_bands.C:65
Double_t
dble_vec_t vec[12]
Definition: ranlxd.cxx:380

Member Data Documentation

std::map<TString, TClonesArray*> PndIdealTrackFinder::fBranchMap
protected
std::vector<TString> PndIdealTrackFinder::fBranchNames
protected

Definition at line 81 of file PndIdealTrackFinder.h.

Referenced by AddBranchName(), and Init().

Double_t PndIdealTrackFinder::fDPoP
protected

Relative momentum Smearing.

Definition at line 93 of file PndIdealTrackFinder.h.

Referenced by CreateTracks(), and SetRelativeMomentumSmearing().

Double_t PndIdealTrackFinder::fEfficiency
protected

Tracking efficiency - if (0 <= e < 1), some tracks will be discarded.

Definition at line 96 of file PndIdealTrackFinder.h.

Referenced by CreateTracks(), and SetTrackingEfficiency().

std::map<FairLink, FairMCPoint > PndIdealTrackFinder::fFirstPointMap
protected
Int_t PndIdealTrackFinder::fHitCount
protected

Definition at line 89 of file PndIdealTrackFinder.h.

Referenced by CreateTrackCands().

std::map<FairLink, FairMCPoint > PndIdealTrackFinder::fLastPointMap
protected
TClonesArray* PndIdealTrackFinder::fMCTrack
protected

Definition at line 78 of file PndIdealTrackFinder.h.

Referenced by Init().

TVector3 PndIdealTrackFinder::fMomSigma
protected

Momentum smearing sigma [GeV].

Definition at line 92 of file PndIdealTrackFinder.h.

Referenced by CreateTracks(), and SetMomentumSmearing().

TString PndIdealTrackFinder::fOutBranchName
protected

Definition at line 75 of file PndIdealTrackFinder.h.

Referenced by Init(), and SetOutputBranchName().

TDatabasePDG* PndIdealTrackFinder::fPdg
protected

! Particle DB

Definition at line 87 of file PndIdealTrackFinder.h.

Referenced by CreateTracks(), and Init().

std::map<TString, TString> PndIdealTrackFinder::fPointBranchMap
protected

Definition at line 85 of file PndIdealTrackFinder.h.

Referenced by AddBranchName(), GetFairMCPoint(), Init(), and PndIdealTrackFinder().

Bool_t PndIdealTrackFinder::fRelative
protected

flag

Definition at line 94 of file PndIdealTrackFinder.h.

Referenced by CreateTracks(), SetMomentumSmearing(), and SetRelativeMomentumSmearing().

TClonesArray* PndIdealTrackFinder::fTrack
protected

Definition at line 77 of file PndIdealTrackFinder.h.

Referenced by CreateTracks(), PndCloneGenerator::Exec(), Exec(), and Init().

TClonesArray* PndIdealTrackFinder::fTrackCand
protected

Definition at line 76 of file PndIdealTrackFinder.h.

Referenced by CreateTracks(), PndCloneGenerator::Exec(), Exec(), and Init().

std::map<FairLink, PndTrackCand> PndIdealTrackFinder::fTrackCandMap
protected
PndTrackFunctor* PndIdealTrackFinder::fTrackSelector
protected
TVector3 PndIdealTrackFinder::fVtxSigma
protected

Vertex smearing sigma [cm].

Definition at line 95 of file PndIdealTrackFinder.h.

Referenced by CreateTracks(), and SetVertexSmearing().


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