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

#include <PndCloneGenerator.h>

Inheritance diagram for PndCloneGenerator:
PndIdealTrackFinder PndPersistencyTask

Public Member Functions

 PndCloneGenerator ()
 
virtual ~PndCloneGenerator ()
 
virtual void Exec (Option_t *opt)
 
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)
 
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 CreateTrackCandClones ()
 
virtual void SetFirstLastHit (std::map< FairLink, PndTrackCand > &trackCandMap)
 
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...
 

Private Member Functions

 ClassDef (PndCloneGenerator, 2)
 

Private Attributes

std::map< FairLink, PndTrackCandfTrackCandCloneMap
 

Detailed Description

Definition at line 21 of file PndCloneGenerator.h.

Constructor & Destructor Documentation

PndCloneGenerator::PndCloneGenerator ( )

Definition at line 23 of file PndCloneGenerator.cxx.

24 {
25  // TODO Auto-generated constructor stub
26 
27 }
PndCloneGenerator::~PndCloneGenerator ( )
virtual

Definition at line 29 of file PndCloneGenerator.cxx.

29  {
30  // TODO Auto-generated destructor stub
31 }

Member Function Documentation

virtual void PndIdealTrackFinder::AddBranchName ( TString  name)
inlinevirtualinherited

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 PndIdealTrackFinder::fBranchNames.

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

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

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 PndIdealTrackFinder::fBranchNames, PndIdealTrackFinder::fPointBranchMap, and name.

PndCloneGenerator::ClassDef ( PndCloneGenerator  ,
 
)
private
PndIdealTrackFinder::ClassDef ( PndIdealTrackFinder  ,
 
)
protectedinherited
void PndCloneGenerator::CreateTrackCandClones ( )
protectedvirtual

Definition at line 53 of file PndCloneGenerator.cxx.

References PndTrackCand::AddHit(), fTrackCandCloneMap, PndIdealTrackFinder::fTrackCandMap, PndTrackCand::GetNHits(), PndTrackCandHit::GetRho(), PndTrackCand::GetSortedHit(), and nHits.

Referenced by Exec().

54 {
55  for (auto trackCandIter : fTrackCandMap)
56  {
57  PndTrackCand myTrackCand = trackCandIter.second;
58  int nHits = myTrackCand.GetNHits();
59  if (nHits > 1){
60  PndTrackCand clone1;
61  clone1.SetInsertHistory(kTRUE);
62  PndTrackCand clone2;
63  clone2.SetInsertHistory(kTRUE);
64  for (int hitIter = 0; hitIter < nHits/2; hitIter++){
65  clone1.AddHit((FairLink)(myTrackCand.GetSortedHit(hitIter)), myTrackCand.GetSortedHit(hitIter).GetRho());
66  }
67  for (int hitIter = nHits/2; hitIter < nHits; hitIter++){
68  clone2.AddHit((FairLink)(myTrackCand.GetSortedHit(hitIter)), myTrackCand.GetSortedHit(hitIter).GetRho());
69  }
70  fTrackCandMap[trackCandIter.first] = clone1;
71  fTrackCandCloneMap[trackCandIter.first] = clone2;
72  }
73  }
74 }
PndTrackCandHit GetSortedHit(UInt_t i)
Definition: PndTrackCand.h:54
void AddHit(UInt_t detId, UInt_t hitId, Double_t rho)
int nHits
Definition: RiemannTest.C:16
std::map< FairLink, PndTrackCand > fTrackCandCloneMap
Double_t GetRho() const
UInt_t GetNHits() const
Definition: PndTrackCand.h:59
std::map< FairLink, PndTrackCand > fTrackCandMap
void PndIdealTrackFinder::CreateTrackCands ( )
protectedvirtualinherited

Definition at line 103 of file PndIdealTrackFinder.cxx.

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

Referenced by Exec(), and PndIdealTrackFinder::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
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
PndSdsMCPoint * point
Definition: anaLmdCluster.C:72
void PndIdealTrackFinder::CreateTracks ( )
protectedvirtualinherited

Definition at line 175 of file PndIdealTrackFinder.cxx.

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

Referenced by Exec(), and PndIdealTrackFinder::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 &lt;= e &lt; 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 PndCloneGenerator::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Reimplemented from PndIdealTrackFinder.

Definition at line 34 of file PndCloneGenerator.cxx.

References CreateTrackCandClones(), PndIdealTrackFinder::CreateTrackCands(), PndIdealTrackFinder::CreateTracks(), PndIdealTrackFinder::fTrack, PndIdealTrackFinder::fTrackCand, fTrackCandCloneMap, PndIdealTrackFinder::fTrackCandMap, and SetFirstLastHit().

35 {
36 
37  fTrackCand->Delete();
38  fTrack->Delete();
39  fTrackCandMap.clear();
40  fTrackCandCloneMap.clear();
41 
42  std::cout << "Event #" << FairRootManager::Instance()->GetEntryNr() << std::endl;
46  std::cout << "PndIdealTrackFinder:Found Tracks:" << std::endl;
47  CreateTracks();
50  CreateTracks();
51 }
TClonesArray * fTrackCand
virtual void CreateTrackCands()
virtual void SetFirstLastHit(std::map< FairLink, PndTrackCand > &trackCandMap)
virtual void CreateTrackCandClones()
std::map< FairLink, PndTrackCand > fTrackCandCloneMap
std::map< FairLink, PndTrackCand > fTrackCandMap
void PndIdealTrackFinder::FilterTrackCands ( )
protectedvirtualinherited

Definition at line 161 of file PndIdealTrackFinder.cxx.

References PndIdealTrackFinder::fTrackCandMap, and PndIdealTrackFinder::fTrackSelector.

Referenced by PndIdealTrackFinder::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 
)
protectedvirtualinherited

Definition at line 255 of file PndIdealTrackFinder.cxx.

References PndIdealTrackFinder::fPointBranchMap.

Referenced by PndIdealTrackFinder::CreateTrackCands(), and 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(), PndRichHitProducer::Init(), PndSttHitProducerRealFast::Init(), PndDiscTaskReconstruction::Init(), PndSttHelixHitProducer::Init(), PndDiscTaskPID::Init(), PndIdealTrackFinder::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 ( )
virtualinherited

Virtual method Init

Definition at line 47 of file PndIdealTrackFinder.cxx.

References PndIdealTrackFinder::AddBranchName(), PndIdealTrackFinder::fBranchMap, PndIdealTrackFinder::fBranchNames, PndIdealTrackFinder::fMCTrack, PndIdealTrackFinder::fOutBranchName, PndIdealTrackFinder::fPdg, PndIdealTrackFinder::fPointBranchMap, PndIdealTrackFinder::fTrack, PndIdealTrackFinder::fTrackCand, PndIdealTrackFinder::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 PndCloneGenerator::SetFirstLastHit ( std::map< FairLink, PndTrackCand > &  trackCandMap)
protectedvirtual

Definition at line 76 of file PndCloneGenerator.cxx.

References At, PndIdealTrackFinder::fBranchMap, PndIdealTrackFinder::fFirstPointMap, PndIdealTrackFinder::fLastPointMap, PndIdealTrackFinder::GetFairMCPoint(), and TString.

Referenced by Exec().

77 {
78  for (auto trackIter : trackCandMap){
79  PndTrackCandHit first = trackIter.second.GetSortedHit(0);
80  PndTrackCandHit last = trackIter.second.GetSortedHit(trackIter.second.GetNHits()-1);
81 
82  FairMultiLinkedData array;
83  FairMultiLinkedData_Interface* links = 0;
84  TString hitBranchName;
85  hitBranchName = FairRootManager::Instance()->GetBranchName(first.GetType());
86  links = (FairMultiLinkedData_Interface*)fBranchMap[hitBranchName]->At(first.GetIndex());
87  FairMCPoint *firstpoint = 0;
88  if (links != 0){
89  firstpoint = GetFairMCPoint(hitBranchName,links, array);
90  if (firstpoint != 0)
91  fFirstPointMap[links->GetSortedMCTracks().front()] = *firstpoint;
92  }
93  hitBranchName = FairRootManager::Instance()->GetBranchName(last.GetType());
94  links = (FairMultiLinkedData_Interface*)fBranchMap[hitBranchName]->At(last.GetIndex());
95  FairMCPoint *lastpoint = 0;
96  if (links != 0){
97  lastpoint = GetFairMCPoint(hitBranchName,links,array);
98  if (lastpoint != 0)
99  fLastPointMap[links->GetSortedMCTracks().front()] = *lastpoint;
100  }
101  }
102 }
std::map< FairLink, FairMCPoint > fFirstPointMap
std::map< TString, TClonesArray * > fBranchMap
virtual FairMCPoint * GetFairMCPoint(TString hitBranch, FairMultiLinkedData_Interface *links, FairMultiLinkedData &array)
std::map< FairLink, FairMCPoint > fLastPointMap
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 PndIdealTrackFinder::SetMomentumSmearing ( Double_t  sigmax = -1.,
Double_t  sigmay = -1.,
Double_t  sigmaz = -1. 
)
inlineinherited

Definition at line 44 of file PndIdealTrackFinder.h.

References fabs(), PndIdealTrackFinder::fMomSigma, and PndIdealTrackFinder::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)
inlinevirtualinherited
void PndIdealTrackFinder::SetPersistence ( Bool_t  persistence)
inlineinherited
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::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(), PndIdealTrackFinder::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.)
inlineinherited
void PndIdealTrackFinder::SetTrackingEfficiency ( Double_t  eff = 1.)
inlineinherited
void PndIdealTrackFinder::SetTrackSelector ( TString  selector)
inlineinherited

< 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 PndIdealTrackFinder::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. 
)
inlineinherited

Definition at line 52 of file PndIdealTrackFinder.h.

References fabs(), and PndIdealTrackFinder::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 
)
protectedvirtualinherited

Definition at line 278 of file PndIdealTrackFinder.cxx.

References Double_t.

Referenced by PndIdealTrackFinder::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
protectedinherited
std::vector<TString> PndIdealTrackFinder::fBranchNames
protectedinherited
Double_t PndIdealTrackFinder::fDPoP
protectedinherited

Relative momentum Smearing.

Definition at line 93 of file PndIdealTrackFinder.h.

Referenced by PndIdealTrackFinder::CreateTracks(), and PndIdealTrackFinder::SetRelativeMomentumSmearing().

Double_t PndIdealTrackFinder::fEfficiency
protectedinherited

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

Definition at line 96 of file PndIdealTrackFinder.h.

Referenced by PndIdealTrackFinder::CreateTracks(), and PndIdealTrackFinder::SetTrackingEfficiency().

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

Definition at line 89 of file PndIdealTrackFinder.h.

Referenced by PndIdealTrackFinder::CreateTrackCands().

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

Definition at line 78 of file PndIdealTrackFinder.h.

Referenced by PndIdealTrackFinder::Init().

TVector3 PndIdealTrackFinder::fMomSigma
protectedinherited

Momentum smearing sigma [GeV].

Definition at line 92 of file PndIdealTrackFinder.h.

Referenced by PndIdealTrackFinder::CreateTracks(), and PndIdealTrackFinder::SetMomentumSmearing().

TString PndIdealTrackFinder::fOutBranchName
protectedinherited
TDatabasePDG* PndIdealTrackFinder::fPdg
protectedinherited

! Particle DB

Definition at line 87 of file PndIdealTrackFinder.h.

Referenced by PndIdealTrackFinder::CreateTracks(), and PndIdealTrackFinder::Init().

std::map<TString, TString> PndIdealTrackFinder::fPointBranchMap
protectedinherited
Bool_t PndIdealTrackFinder::fRelative
protectedinherited
TClonesArray* PndIdealTrackFinder::fTrack
protectedinherited
TClonesArray* PndIdealTrackFinder::fTrackCand
protectedinherited
std::map<FairLink, PndTrackCand> PndCloneGenerator::fTrackCandCloneMap
private

Definition at line 39 of file PndCloneGenerator.h.

Referenced by CreateTrackCandClones(), and Exec().

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

Vertex smearing sigma [cm].

Definition at line 95 of file PndIdealTrackFinder.h.

Referenced by PndIdealTrackFinder::CreateTracks(), and PndIdealTrackFinder::SetVertexSmearing().


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