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

Holding statically callable quality numbers. More...

#include <PndTrackingQualityBarrelAnalysisNewLinks.h>

Inheritance diagram for PndTrackingQualityBarrelAnalysisNewLinks:

Public Member Functions

 PndTrackingQualityBarrelAnalysisNewLinks (TString trackBranchName, TString idealTrackName, Bool_t pndTrackData=kTRUE)
 
 PndTrackingQualityBarrelAnalysisNewLinks (TString trackBranchName, TString idealTrackName, PossibleTrackFunctor *posTrack, Bool_t pndTrackData=kTRUE)
 
virtual ~PndTrackingQualityBarrelAnalysisNewLinks ()
 
virtual void Init ()
 
void SetVerbose (Int_t val)
 
void AddHitsBranchName (TString name)
 Adds branch names of detector data which should be taken into account in the analysis. More...
 
void SetHitsBranchNames (std::vector< TString > names)
 
void AnalyseEvent (TClonesArray *recoTrackInfo)
 
Int_t GetNIdealHits (FairMultiLinkedData &track, TString branchName)
 
std::map< Int_t, Int_t > GetMCTrackFound ()
 
std::map< Int_t, Int_t > GetTrackQualification ()
 
std::map< Int_t, Int_t > GetTrackMCStatus ()
 
std::map< Int_t, std::map
< TString, std::pair< Double_t,
Int_t > > > 
GetEfficiencies ()
 
std::map< Int_t, Double_tGetPResolution ()
 
std::map< Int_t, TVector3 > GetP ()
 
std::map< Int_t, Double_tGetPtResolution ()
 
std::map< Int_t, Double_tGetPt ()
 
std::map< Int_t, Double_tGetPResolutionRel ()
 
std::map< Int_t, Double_tGetPtResolutionRel ()
 
std::map< Int_t, Int_t > GetTrackIdMCId ()
 
Int_t GetNGhosts ()
 
void PrintTrackDataSummary (FairMultiLinkedData &trackData, Bool_t detailedInfo=kFALSE)
 
void PrintTrackQualityMap (Bool_t detailedInfo=kFALSE)
 
void PrintTrackMCStatusMap ()
 
void PrintTrackInfo (std::map< TString, FairMultiLinkedData > info)
 
Int_t GetIdealTrackIdFromMCTrackId (int mctrackid)
 
Int_t GetIdealTrackIdFromRecoTrackId (int trackid)
 
PndTrackingQualityRecoInfo GetRecoInfoFromRecoTrack (Int_t trackId, Int_t mctrackId)
 

Static Public Member Functions

static Bool_t IsBarrelMVD (FairMultiLinkedData &links, int iHit)
 
static Int_t NBarrelMVD (FairMultiLinkedData &links)
 

Private Member Functions

virtual void FillMapTrackQualifikation ()
 
Bool_t IsBetterTrackExisting (Int_t &mcIndex, int quality)
 
Int_t GetSumOfAllValidMCHits (FairMultiLinkedData *trackData)
 
virtual Int_t AnalyseTrackInfo (std::map< TString, FairMultiLinkedData > &trackInfo, Int_t trackId)
 
virtual void CalcEfficiencies (Int_t mostProbableTrack, std::map< TString, FairMultiLinkedData > &trackInfo)
 
FairMultiLinkedData GetMCInfoForBranch (TString branchName, PndTrackCand *trackCand)
 
std::map< TString,
FairMultiLinkedData > 
AnalyseTrackCand (PndTrackCand *trackCand)
 

Private Attributes

Int_t fVerbose
 
FairRootManager * ioman
 
Int_t fNGhosts
 
TString fTrackBranchName
 
TString fIdealTrackName
 
Bool_t fPndTrackOrTrackCand
 
PossibleTrackFunctor * fPossibleTrack
 
Bool_t fUseCorrectedSkewedHits
 
std::vector< TStringfBranchNames
 
std::map< Int_t, Int_t > fTrackIdMCId
 ! map between track id and most probable MC track id More...
 
std::map< Int_t, Int_t > fMCIdTrackId
 ! map between MC id and track id More...
 
std::map< Int_t, Int_t > fMCIdIdealTrackId
 ! map between MC id and ideal track id More...
 
std::map< Int_t, Int_t > fMCTrackFound
 ! How often was a MC Track (key) found More...
 
std::map< Int_t, Int_t > fMapTrackMCStatus
 ! TrackId vs TrackStatus from MC More...
 
std::map< Int_t, Int_t > fMapTrackQualification
 ! TrackId vs TrackStatus after analysis of track finding More...
 
std::map< Int_t, std::map
< TString, std::pair< Double_t,
Int_t > > > 
fMapEfficiencies
 ! MostProbable TrackId, BranchName, Efficiency, #FoundHits / #MCHits, #MCHits More...
 
std::map< Int_t, Double_tfMapPResolution
 
std::map< Int_t, TVector3 > fMapP
 
std::map< Int_t, Double_tfMapPtResolution
 
std::map< Int_t, Double_tfMapPt
 
std::map< Int_t, Double_tfMapPResolutionRel
 
std::map< Int_t, Double_tfMapPtResolutionRel
 
TClonesArray * fTrack
 
TClonesArray * fMCTrack
 
TClonesArray * fIdealTrack
 
TClonesArray * fIdealTrackCand
 

Detailed Description

Holding statically callable quality numbers.

Per event, a track can have a certain quality. On a MC level, it can be below a threshold to be even found. If found, it can be found fully, or partially. The struct holds the identifiers needed to categorize tracks. The rough idea is: Positive numbers are referring to reconstructed tracks, negative numbers to track before reconstruction. The five numbers from -5 to -1 are repeating from -11 to -7 and there referring to monte carlo data.

Definition at line 156 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Constructor & Destructor Documentation

PndTrackingQualityBarrelAnalysisNewLinks::PndTrackingQualityBarrelAnalysisNewLinks ( TString  trackBranchName,
TString  idealTrackName,
Bool_t  pndTrackData = kTRUE 
)

Definition at line 22 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References fPossibleTrack.

22  :
23  fVerbose(1), ioman(NULL), fNGhosts(0),
24  fTrackBranchName(trackBranchName), fIdealTrackName(idealTrackName), fPndTrackOrTrackCand(pndTrackData), fPossibleTrack(0),
28  fTrack(NULL),fMCTrack(NULL),fIdealTrack(NULL),fIdealTrackCand(NULL)
29 {
30  if(fPossibleTrack == 0){
31  std::cout << "-I- PndTrackingQualityBarrelAnalysisNewLinks::PndTrackingQualityBarrelAnalysisNewLinks no PossibleTrackFunctor given. Taking Standard!" << std::endl;
32  if (trackBranchName == "MVDTrack" ){
34  } else if (trackBranchName == "CombiTrackCand" ) {
36  } else {
38  }
39  }
40 }
PndTrackingQualityBarrelAnalysisNewLinks::PndTrackingQualityBarrelAnalysisNewLinks ( TString  trackBranchName,
TString  idealTrackName,
PossibleTrackFunctor *  posTrack,
Bool_t  pndTrackData = kTRUE 
)

Definition at line 42 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References fPossibleTrack.

42  :
43  fVerbose(1), ioman(NULL), fNGhosts(0),
44  fTrackBranchName(trackBranchName), fIdealTrackName(idealTrackName), fPndTrackOrTrackCand(pndTrackData), fPossibleTrack(posTrack),
48  fTrack(NULL),fMCTrack(NULL),fIdealTrack(NULL),fIdealTrackCand(NULL)
49 
50 {
51  if(fPossibleTrack == 0){
52  std::cout << "-I- PndTrackingQualityBarrelAnalysisNewLinks::PndTrackingQualityBarrelAnalysisNewLinks no PossibleTrackFunctor given. Taking Standard!" << std::endl;
53  if (trackBranchName == "MVDTrack" ){
55  } else if (trackBranchName == "CombiTrackCand" ) {
57  } else {
59  }
60  }
61 }
PndTrackingQualityBarrelAnalysisNewLinks::~PndTrackingQualityBarrelAnalysisNewLinks ( )
virtual

Definition at line 63 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References fPossibleTrack.

64 {
65  delete (fPossibleTrack);
66 }

Member Function Documentation

void PndTrackingQualityBarrelAnalysisNewLinks::AddHitsBranchName ( TString  name)
inline

Adds branch names of detector data which should be taken into account in the analysis.

Definition at line 167 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

References fBranchNames.

Referenced by Init().

167 { fBranchNames.push_back(name);}
TString name
void PndTrackingQualityBarrelAnalysisNewLinks::AnalyseEvent ( TClonesArray *  recoTrackInfo)

Definition at line 97 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References AnalyseTrackCand(), AnalyseTrackInfo(), CalcEfficiencies(), FillMapTrackQualifikation(), fMapP, fMapPResolution, fMapPResolutionRel, fMapPt, fMapPtResolution, fMapPtResolutionRel, fMapTrackQualification, fMCIdTrackId, fMCTrack, fMCTrackFound, fPndTrackOrTrackCand, fTrack, fTrackIdMCId, fVerbose, PndMCTrack::GetMomentum(), PndTrack::GetParamFirst(), GetRecoInfoFromRecoTrack(), PndTrack::GetTrackCandPtr(), i, mom, PrintTrackQualityMap(), and PndTrackingQualityRecoInfo::SetNofMCTracks().

Referenced by PndTrackingQualityBarrelTaskNewLinks::Exec().

98 {
100  std::cout << "PndTrackingQualityBarrelAnalysisNewLinks::AnalyseEvent() Track quality map before analysis: " << std::endl << std::endl;
101  PrintTrackQualityMap(kTRUE);
102 
103  for (Int_t i = 0; i < fTrack->GetEntriesFast(); i++){
104 
105  std::cout << "----------------------------------" << std::endl;
106 
107  std::cout << "Analyse Track: " << i << std::endl;
108 
109  std::map<TString, FairMultiLinkedData> trackInfo;
110 
112  PndTrack* myTrack = (PndTrack*)fTrack->At(i);
113  trackInfo = AnalyseTrackCand(myTrack->GetTrackCandPtr());
114  } else {
115  PndTrackCand* myTrack = (PndTrackCand*)fTrack->At(i);
116  trackInfo = AnalyseTrackCand(myTrack);
117  }
118  if (fVerbose > 1){
119  std::cout << "PndTrackingQualityBarrelAnalysisNewLinks::AnalyseEvent Analyse track: " << i << std::endl;
120  }
121  Int_t mostProbableTrack = AnalyseTrackInfo(trackInfo, i);
122  std::cout << "mostProbableTrack " << mostProbableTrack << std::endl;
123  if (mostProbableTrack == -1) continue;
124 
125  fTrackIdMCId[i] = mostProbableTrack;
126  CalcEfficiencies(mostProbableTrack, trackInfo);
127 
128  fMCTrackFound[mostProbableTrack]++;
129 
130  PndTrackingQualityRecoInfo recoinfo = GetRecoInfoFromRecoTrack(i, mostProbableTrack);
131  int nof_asso_mctracks = trackInfo["AllHits"].GetNLinks();
132  recoinfo.SetNofMCTracks(nof_asso_mctracks);
133  int size = recoTrackInfo->GetEntriesFast();
134  new((*recoTrackInfo)[size]) PndTrackingQualityRecoInfo(recoinfo);
135  }
136 
137  for (std::map<Int_t, Int_t>::iterator iter = fMapTrackQualification.begin();
138  iter != fMapTrackQualification.end(); iter++) {
139 
140 
141  if (iter->first > -1 && iter->second > 0) {
142  PndMCTrack* mcTrack = (PndMCTrack*) fMCTrack->At(iter->first);
143 
144  if (fPndTrackOrTrackCand) {
145  PndTrack* myTrack = (PndTrack*) fTrack->At(fMCIdTrackId[iter->first]);
146  TVector3 mom(myTrack->GetParamFirst().GetPx(),
147  myTrack->GetParamFirst().GetPy(),
148  myTrack->GetParamFirst().GetPz());
149  TVector3 McMom(mcTrack->GetMomentum());
150 
151  fMapPResolution[iter->first] = (mom.Mag() - McMom.Mag());
152  fMapP[iter->first] = mom;
153  fMapPtResolution[iter->first] = (mom.Pt() - McMom.Pt());
154  fMapPt[iter->first] = mom.Pt();
155  fMapPResolutionRel[iter->first] = (mom.Mag() - McMom.Mag())
156  / McMom.Mag();
157  fMapPtResolutionRel[iter->first] = (mom.Pt() - McMom.Pt())
158  / McMom.Pt();
159  }
160  }
161 
162  }
163 
164 }
Int_t i
Definition: run_full.C:25
TVector3 GetMomentum() const
Definition: PndMCTrack.h:78
Double_t mom
Definition: plot_dirc.C:14
void SetNofMCTracks(Int_t nofmctracks)
PndTrackCand * GetTrackCandPtr()
Definition: PndTrack.h:48
FairTrackParP GetParamFirst()
Definition: PndTrack.h:49
std::map< TString, FairMultiLinkedData > PndTrackingQualityBarrelAnalysisNewLinks::AnalyseTrackCand ( PndTrackCand trackCand)
private

Definition at line 186 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References fBranchNames, fVerbose, GetMCInfoForBranch(), and PrintTrackInfo().

Referenced by AnalyseEvent().

187 {
188  std::map<TString, FairMultiLinkedData> trackInfo;
189 
190  if (fVerbose > 0) {
191  std::cout << "PndTrackingQualityData::AnalyseTrackCand: TrackInfo" << std::endl;
192  //std::cout << *trackCand << std::endl;
193  }
194  for (unsigned int branchIndex = 0; branchIndex < fBranchNames.size(); branchIndex++){
195  trackInfo[fBranchNames[branchIndex]] = GetMCInfoForBranch(fBranchNames[branchIndex], trackCand);
196  trackInfo["AllHits"].AddLinks(trackInfo[fBranchNames[branchIndex]]);
197  }
198  if (fVerbose > 0)
199  PrintTrackInfo(trackInfo);
200  return trackInfo;
201 }
Int_t PndTrackingQualityBarrelAnalysisNewLinks::AnalyseTrackInfo ( std::map< TString, FairMultiLinkedData > &  trackInfo,
Int_t  trackId 
)
privatevirtual

Definition at line 203 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References Double_t, fIdealTrack, fMapTrackQualification, fMCIdIdealTrackId, fMCIdTrackId, fNGhosts, fVerbose, GetSumOfAllValidMCHits(), i, qualityNumbers::kFullyFound, qualityNumbers::kPartiallyFound, qualityNumbers::kSpuriousFound, and PrintTrackDataSummary().

Referenced by AnalyseEvent().

204 {
205 
206  Int_t mostProbableTrack = -1;
207 // if (fVerbose > 0)
208 // std::cout << "PndTrackingQualityBarrelAnalysisNewLinks::AnalyseTrackInfo: TrackInfo: " << trackInfo["AllHits"].GetNLinks() << std::endl;
209  //PrintTrackDataSummary(trackInfo["AllHits"]);
210 
211  if (trackInfo["AllHits"].GetNLinks() == 1){
212  mostProbableTrack = trackInfo["AllHits"].GetLink(0).GetIndex();
213  PndTrackCand* myIdealTrack = ((PndTrack*)fIdealTrack->At(fMCIdIdealTrackId[mostProbableTrack]))->GetTrackCandPtr();
214  Int_t nMCHits = GetSumOfAllValidMCHits(myIdealTrack->GetPointerToLinks());
215 
216  if (nMCHits == trackInfo["AllHits"].GetLink(0).GetWeight()){
217  fMapTrackQualification[trackInfo["AllHits"].GetLink(0).GetIndex()] = qualityNumbers::kFullyFound;
218  fMCIdTrackId[mostProbableTrack] = trackId;
219  } else {
220  if (fMapTrackQualification[trackInfo["AllHits"].GetLink(0).GetIndex()] != qualityNumbers::kFullyFound){
221  fMapTrackQualification[trackInfo["AllHits"].GetLink(0).GetIndex()] = qualityNumbers::kPartiallyFound;
222  fMCIdTrackId[mostProbableTrack] = trackId;
223  }
224  }
225  } else {
226  Int_t highestCount = 0;
227  Int_t allCounts = 0;
228  for (int i = 0; i < trackInfo["AllHits"].GetNLinks(); i++){
229  allCounts += trackInfo["AllHits"].GetLink(i).GetWeight();
230  if (trackInfo["AllHits"].GetLink(i).GetWeight() > highestCount){
231  highestCount = trackInfo["AllHits"].GetLink(i).GetWeight();
232  mostProbableTrack = trackInfo["AllHits"].GetLink(i).GetIndex();
233  }
234  }
235 
236  if ((Double_t)highestCount/(Double_t)allCounts > 0.7){
237  if (fMapTrackQualification[mostProbableTrack] != qualityNumbers::kFullyFound
240  fMCIdTrackId[mostProbableTrack] = trackId;
241  }
242  }
243  else {
244  fNGhosts++;
245  }
246  }
247  if (fVerbose > 0){
248  for (int j = 0; j < trackInfo["AllHits"].GetNLinks(); j++){
249  FairLink myLink = trackInfo["AllHits"].GetLink(j);
250  if (fMCIdIdealTrackId.count(myLink.GetIndex()) > 0){
251  PndTrackCand* myIdealTrack = ((PndTrack*)fIdealTrack->At(fMCIdIdealTrackId[myLink.GetIndex()]))->GetTrackCandPtr();
252  std::cout << "Ideal Tracking: Track " << myLink.GetIndex() << ": ";
253  PrintTrackDataSummary(*myIdealTrack->GetPointerToLinks());
254  } else {
255  std::cout << "Ideal Tracking: Track " << myLink.GetIndex() << " not available" << std::endl;
256  }
257 
258  }
259  std::cout << "MostProbableTrack: " << mostProbableTrack << " Quality: " << fMapTrackQualification[mostProbableTrack] << std::endl;
260  std::cout << std::endl;
261  }
262 
263  return mostProbableTrack;
264 }
Int_t i
Definition: run_full.C:25
static const int kPartiallyFound
Definition: PndTrackingQA.h:60
Double_t
static const int kFullyFound
Definition: PndTrackingQA.h:61
static const int kSpuriousFound
Definition: PndTrackingQA.h:59
void PndTrackingQualityBarrelAnalysisNewLinks::CalcEfficiencies ( Int_t  mostProbableTrack,
std::map< TString, FairMultiLinkedData > &  trackInfo 
)
privatevirtual

Definition at line 360 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References Double_t, fBranchNames, fIdealTrack, fMapEfficiencies, fMCIdIdealTrackId, GetNIdealHits(), and i.

Referenced by AnalyseEvent().

361 {
362  if (mostProbableTrack < 0) return;
363  for (unsigned int branchIndex = 0; branchIndex < fBranchNames.size(); branchIndex++){
364  if (fMCIdIdealTrackId.count(mostProbableTrack) > 0){
365  PndTrackCand* trackCand = ((PndTrack*)fIdealTrack->At(fMCIdIdealTrackId[mostProbableTrack]))->GetTrackCandPtr();
366  Int_t nMcHits = GetNIdealHits(*trackCand->GetPointerToLinks(), fBranchNames[branchIndex]);
367  FairMultiLinkedData foundHits = trackInfo[fBranchNames[branchIndex]];
368  for (int i = 0; i < foundHits.GetNLinks(); i++){
369  if (foundHits.GetLink(i).GetIndex() == mostProbableTrack){
370  Double_t nFoundHits = foundHits.GetLink(i).GetWeight();
371  if ((nFoundHits/nMcHits) > fMapEfficiencies[mostProbableTrack][fBranchNames[branchIndex]].first){
372  std::pair<Double_t, Int_t> result(nFoundHits/nMcHits, nMcHits);
373  fMapEfficiencies[mostProbableTrack][fBranchNames[branchIndex]]=result;
374  }
375  }
376  }
377  }
378  }
379 }
Int_t i
Definition: run_full.C:25
Double_t
void PndTrackingQualityBarrelAnalysisNewLinks::FillMapTrackQualifikation ( )
privatevirtual

Definition at line 266 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References Bool_t, fIdealTrack, fMapTrackMCStatus, fMapTrackQualification, fMCIdIdealTrackId, fMCTrack, fVerbose, PndTrackCand::getMcTrackId(), PndMCTrack::GetMotherID(), GetNIdealHits(), i, qualityNumbers::kAtLeastThreePrim, qualityNumbers::kAtLeastThreeSec, qualityNumbers::kLessThanThreePrim, and nHits.

Referenced by AnalyseEvent().

267 {
268  fMapTrackQualification.clear();
269  fMapTrackMCStatus.clear();
270  fMCIdIdealTrackId.clear();
271  for (int i = 0; i < fIdealTrack->GetEntriesFast(); i++){
272  PndTrackCand* idealTrackCand = ((PndTrack*)fIdealTrack->At(i))->GetTrackCandPtr();
273  PndMCTrack* mcTrack = (PndMCTrack*)fMCTrack->At(idealTrackCand->getMcTrackId());
274  fMCIdIdealTrackId[idealTrackCand->getMcTrackId()] = i;
275  Bool_t primaryTrack = (mcTrack->GetMotherID() < 0);
276  Bool_t atLeastThreeHits = kFALSE;
277  Int_t nHits = 0;
278 // for (int branchIndex = 0; branchIndex < fBranchNames.size(); branchIndex++){
279 // TString branchName = fBranchNames[branchIndex];
280 // nHits += GetNIdealHits(i, branchName);
281 // }
282  Int_t nMVDPixel = GetNIdealHits(*(idealTrackCand->GetPointerToLinks()), "MVDHitsPixel");
283  Int_t nMVDStrip = GetNIdealHits(*(idealTrackCand->GetPointerToLinks()), "MVDHitsStrip");
284  Int_t nSTT = GetNIdealHits(*(idealTrackCand->GetPointerToLinks()), "STTHit");
285  //SG!!! nHits += GetNIdealHits(*(idealTrackCand->GetPointerToLinks()), "GEMHit");
286 
287  nHits += nMVDPixel;
288  nHits += nMVDStrip;
289  nHits += nSTT;
290  //std::cout<<"SG: n hits "<<nMVDPixel<<" "<<nMVDStrip<<" "<<nSTT<<std::endl;
291  //std::cout << "FillMapTrackQualifikation: NHits: " << nHits << std::endl;
292 
293  //if (nHits > 2) atLeastThreeHits = kTRUE;
294  if (nHits >= 5 && (nMVDPixel + nMVDStrip >=0 )) atLeastThreeHits = kTRUE; //SG!!!
295  fMapTrackQualification[idealTrackCand->getMcTrackId()] = 0;
296 
297  if (atLeastThreeHits) {
298  if (primaryTrack) {
300  } else {
302  }
303  // std::cout << "AtLeastThreeHits: Track "<< i << " status: " << fMapTrackQualification[i] << std::endl;
304  }
305  else if (primaryTrack){ //No hits for primary track in central tracking detectors
307  }
308  /*
309  PndTrackCand* entry = ((PndTrack*)fIdealTrack->At(i))->GetTrackCandPtr();
310  if ((*fPossibleTrack)((FairMultiLinkedData*)entry->GetPointerToLinks(), primaryTrack))
311  {
312  if (primaryTrack) {
313  fMapTrackQualification[idealTrackCand->getMcTrackId()] = qualityNumbers::kPossiblePrim;
314  } else {
315  fMapTrackQualification[idealTrackCand->getMcTrackId()] = qualityNumbers::kPossibleSec;
316  }
317  }
318  */
319  }
320  if (fVerbose > 0){
321  std::cout << "-I- PndMCTestPatternRecoQuality::FillMapTrackQualifikation:" << std::endl;
322 // PrintTrackQualityMap();
323  }
325 }
int getMcTrackId() const
Definition: PndTrackCand.h:60
Int_t i
Definition: run_full.C:25
static const int kLessThanThreePrim
Definition: PndTrackingQA.h:47
static const int kAtLeastThreeSec
Definition: PndTrackingQA.h:45
int nHits
Definition: RiemannTest.C:16
static const int kAtLeastThreePrim
Definition: PndTrackingQA.h:46
Int_t GetMotherID() const
Definition: PndMCTrack.h:74
std::map<Int_t, std::map<TString, std::pair<Double_t, Int_t > > > PndTrackingQualityBarrelAnalysisNewLinks::GetEfficiencies ( )
inline

Definition at line 177 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

References fMapEfficiencies.

Referenced by PndTrackingQualityBarrelTaskNewLinks::Exec().

177 {return fMapEfficiencies;}
Int_t PndTrackingQualityBarrelAnalysisNewLinks::GetIdealTrackIdFromMCTrackId ( int  mctrackid)
inline

Definition at line 198 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

References fMCIdIdealTrackId.

Referenced by PndTrackingQualityBarrelTaskNewLinks::Exec().

198 { return fMCIdIdealTrackId[mctrackid]; }
Int_t PndTrackingQualityBarrelAnalysisNewLinks::GetIdealTrackIdFromRecoTrackId ( int  trackid)
inline

Definition at line 199 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

References fMCIdIdealTrackId, and fTrackIdMCId.

Referenced by PndTrackingQualityBarrelTaskNewLinks::Exec().

199  {
200  int mctrackid = fTrackIdMCId[trackid];
201  return fMCIdIdealTrackId[mctrackid];
202  }
FairMultiLinkedData PndTrackingQualityBarrelAnalysisNewLinks::GetMCInfoForBranch ( TString  branchName,
PndTrackCand trackCand 
)
private

Definition at line 166 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References ioman.

Referenced by AnalyseTrackCand().

167 {
168  FairMultiLinkedData result;
169  result.SetInsertHistory(kFALSE);
170  //std::cout << "GetMCInforForBranch: " << branchName << std::endl;
171  FairMultiLinkedData linksOfType = trackCand->GetLinksWithType(ioman->GetBranchId(branchName));
172  //std::cout << "GetMCInforForBranch: LinksOfType " << branchName << " : " << linksOfType << std::endl;
173 
174  for (int j = 0; j < linksOfType.GetNLinks(); j++){
175  FairMultiLinkedData_Interface* linkData = (FairMultiLinkedData_Interface*)FairRootManager::Instance()->GetCloneOfLinkData(linksOfType.GetLink(j));
176  //std::cout << "CloneOfLinkData: " << *linkData << std::endl;
177  if (linkData != 0){
178  FairMultiLinkedData linkDataType = linkData->GetLinksWithType(FairRootManager::Instance()->GetBranchId("MCTrack"));
179  linkDataType.SetAllWeights(1.);
180  result.AddLinks(linkDataType);
181  }
182  }
183  return result;
184 }
std::map<Int_t, Int_t> PndTrackingQualityBarrelAnalysisNewLinks::GetMCTrackFound ( )
inline

Definition at line 174 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

References fMCTrackFound.

Referenced by PndTrackingQualityBarrelTaskNewLinks::Exec().

174 {return fMCTrackFound;}
Int_t PndTrackingQualityBarrelAnalysisNewLinks::GetNGhosts ( )
inline
Int_t PndTrackingQualityBarrelAnalysisNewLinks::GetNIdealHits ( FairMultiLinkedData &  track,
TString  branchName 
)

Definition at line 390 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References ioman, and NBarrelMVD().

Referenced by CalcEfficiencies(), FillMapTrackQualifikation(), GetRecoInfoFromRecoTrack(), and PrintTrackDataSummary().

391 {
392  Int_t numberGemHits = 0;
393  if (branchName == "GEMHit"){
394  numberGemHits = track.GetLinksWithType(ioman->GetBranchId("GEMPoint")).GetNLinks();
395  return numberGemHits;
396  }
397  else if (branchName == "MVDHitsPixel" || branchName == "MVDHitsStrip"){
398  //cout<<"\n branch "<<branchName<<endl;
399  FairMultiLinkedData links = track.GetLinksWithType(ioman->GetBranchId(branchName));
400  int nBarrel = NBarrelMVD( links );
401  //return links.GetNLinks();
402  return nBarrel;
403  }
404 
405  return track.GetLinksWithType(ioman->GetBranchId(branchName)).GetNLinks();
406 }
PndMCTrack * track
Definition: anaLmdCluster.C:89
std::map<Int_t, TVector3> PndTrackingQualityBarrelAnalysisNewLinks::GetP ( )
inline
std::map<Int_t, Double_t> PndTrackingQualityBarrelAnalysisNewLinks::GetPResolution ( )
inline
std::map<Int_t, Double_t> PndTrackingQualityBarrelAnalysisNewLinks::GetPResolutionRel ( )
inline
std::map<Int_t, Double_t> PndTrackingQualityBarrelAnalysisNewLinks::GetPt ( )
inline

Definition at line 181 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

References fMapPt.

std::map<Int_t, Double_t> PndTrackingQualityBarrelAnalysisNewLinks::GetPtResolution ( )
inline
std::map<Int_t, Double_t> PndTrackingQualityBarrelAnalysisNewLinks::GetPtResolutionRel ( )
inline
PndTrackingQualityRecoInfo PndTrackingQualityBarrelAnalysisNewLinks::GetRecoInfoFromRecoTrack ( Int_t  trackId,
Int_t  mctrackId 
)

Definition at line 472 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References Bool_t, fBranchNames, fIdealTrack, fMCIdIdealTrackId, fTrack, PndTrack::GetFlag(), GetNIdealHits(), PndTrack::GetParamFirst(), PndTrack::GetParamLast(), PndTrack::GetTrackCandPtr(), hit, ioman, nHits, PndTrackingQualityRecoInfo::SetCharge(), PndTrackingQualityRecoInfo::SetFlag(), PndTrackingQualityRecoInfo::SetMCTrackID(), PndTrackingQualityRecoInfo::SetMomentumFirst(), PndTrackingQualityRecoInfo::SetMomentumLast(), PndTrackingQualityRecoInfo::SetNofGemFakeHits(), PndTrackingQualityRecoInfo::SetNofGemMissingHits(), PndTrackingQualityRecoInfo::SetNofGemTrueHits(), PndTrackingQualityRecoInfo::SetNofMvdPixelFakeHits(), PndTrackingQualityRecoInfo::SetNofMvdPixelMissingHits(), PndTrackingQualityRecoInfo::SetNofMvdPixelTrueHits(), PndTrackingQualityRecoInfo::SetNofMvdStripFakeHits(), PndTrackingQualityRecoInfo::SetNofMvdStripMissingHits(), PndTrackingQualityRecoInfo::SetNofMvdStripTrueHits(), PndTrackingQualityRecoInfo::SetNofSttFakeHits(), PndTrackingQualityRecoInfo::SetNofSttMissingHits(), PndTrackingQualityRecoInfo::SetNofSttTrueHits(), PndTrackingQualityRecoInfo::SetPositionFirst(), PndTrackingQualityRecoInfo::SetPositionLast(), and track.

Referenced by AnalyseEvent().

473 {
474  PndTrackingQualityRecoInfo recoinfo(trackId);
475 
476  // CHECK this can be modified in the future, for now it is ok
477  // mvd pix / mvd str / stt paral / stt skew / gem
478  std::map< int, int > noftruehits;
479  std::map< int, int > noffakehits;
480  std::map< int, int > nofmissinghits;
481 
482  for (unsigned int branchIndex = 0; branchIndex < fBranchNames.size(); branchIndex++){
483  noftruehits.clear();
484  noffakehits.clear();
485  nofmissinghits.clear();
486 
487  // get the reco track...
488  PndTrack *track = (PndTrack*) fTrack->At(trackId);
489  // .. and the track cand
490  PndTrackCand* trackcand = track->GetTrackCandPtr();
491 
492  recoinfo.SetPositionFirst(track->GetParamFirst().GetPosition());
493  recoinfo.SetMomentumFirst(track->GetParamFirst().GetMomentum());
494 
495  recoinfo.SetPositionLast(track->GetParamLast().GetPosition());
496  recoinfo.SetMomentumLast(track->GetParamLast().GetMomentum());
497 
498  recoinfo.SetCharge(track->GetParamFirst().GetQ());
499  recoinfo.SetFlag(track->GetFlag());
500 
501 
502  // get links associated to the reco track
503  FairMultiLinkedData ptrlink = *trackcand->GetPointerToLinks();
504  // get links corresponding to the hits of the specific detector
505  FairMultiLinkedData links = ptrlink.GetLinksWithType(ioman->GetBranchId(fBranchNames[branchIndex]));
506  // get their number
507  Int_t nHits = links.GetNLinks();
508  std::cout << "----- reco track " << trackId << " (mc track " << mctrackId<< ") has " << nHits << " from " << fBranchNames[branchIndex] << std::endl;
509 
510  // get mc track info from each hit
511  for (int ihit = 0; ihit < nHits; ihit++){
512  FairLink link = links.GetLink(ihit);
513  int assomctrack = -1;
514  // std::cout << "ihit " << ihit << " " << link.GetIndex() << " " << link.GetType() << " " << link.GetWeight() << std::endl;
515  FairHit * hit = (FairHit*) links.GetData(link);
516  if(!hit) {
517  std::cout << "ihit " << ihit << " " << link.GetIndex() << " is FAKE" << std::endl;
518  // std::cout << "No Obj Hit" << std::endl;
519 
520  //
521  if(noffakehits.count(branchIndex) > 0) noffakehits[branchIndex]++;
522  else noffakehits[branchIndex] = 1; // if not there
523  continue;
524  }
525 
526  // get links of the hit
527  FairMultiLinkedData hitlink = *hit->GetPointerToLinks();
528  // get the links corresponding to the mc track associated to the hit
529  FairMultiLinkedData mclinks = hitlink.GetLinksWithType(ioman->GetBranchId("MCTrack"));
530  // std::cout << "hit " << ihit << " belongs to " << mclinks.GetNLinks() << " mc tracks" << std::endl;
531  Bool_t isgood = kFALSE;
532  FairMultiLinkedData mvdstrhits = links.GetLinksWithType(FairRootManager::Instance()->GetBranchId("MVDHitsStrip"));
533  FairMultiLinkedData gemhits = links.GetLinksWithType(FairRootManager::Instance()->GetBranchId("GEMHit"));
534  if ((gemhits.GetNLinks() > 0 || mvdstrhits.GetNLinks() > 0) && mclinks.GetNLinks() > 1) {
535  isgood = kFALSE;
536  }
537  else {
538  for (int imctrk = 0; imctrk < mclinks.GetNLinks(); imctrk++) {
539  FairLink mclink = mclinks.GetLink(imctrk);
540  assomctrack = mclink.GetIndex();
541  // std::cout << "imctrk " << imctrk << " " << mclink.GetIndex() << " " << mclink.GetType() << " " << mclink.GetWeight() << std::endl;
542  std::cout << "ihit " << ihit << " (hitid " << link.GetIndex() << ") belongs to MC track " << assomctrack << std::endl;
543  if(assomctrack == mctrackId) isgood = kTRUE;
544  }
545  }
546 
547  // if true
548  if(isgood == kTRUE) {
549  // if true and already there
550  if(noftruehits.count(branchIndex) > 0)noftruehits[branchIndex]++;
551  else noftruehits[branchIndex] = 1; // if not there
552  }
553  else { // if not
554  if(noffakehits.count(branchIndex) > 0) noffakehits[branchIndex]++;
555  else noffakehits[branchIndex] = 1; // if not there
556  }
557 
558  }
559 
560 
561  // retrieve the ideal track cand associated
562  if (fMCIdIdealTrackId.count(mctrackId) > 0){
563  int idealtrackid = fMCIdIdealTrackId[mctrackId];
564  PndTrack *idealtrack = (PndTrack*) fIdealTrack->At(idealtrackid);
565  PndTrackCand* idealtrackcand = idealtrack->GetTrackCandPtr();
566 
567  Int_t nMcHits = GetNIdealHits(*idealtrackcand->GetPointerToLinks(), fBranchNames[branchIndex]);
568 
569  nofmissinghits[branchIndex] = nMcHits - noftruehits[branchIndex];
570 
571  std::cout << "**** ideal track " << idealtrackid << " has " << nMcHits << " from " << fBranchNames[branchIndex] << std::endl;
572 
573  }
574 
575  std::cout << "===> BRANCH " << fBranchNames[branchIndex] << " of track " << trackId << " (mc track " << mctrackId << ") has " << noftruehits[branchIndex] << " true, " << noffakehits[branchIndex] << " fake and " << nofmissinghits[branchIndex] << " missing hits" << std::endl;
576 
577  if(fBranchNames[branchIndex] == "MVDHitsPixel") {
578  recoinfo.SetNofMvdPixelTrueHits(noftruehits[branchIndex]);
579  recoinfo.SetNofMvdPixelFakeHits(noffakehits[branchIndex]);
580  recoinfo.SetNofMvdPixelMissingHits(nofmissinghits[branchIndex]);
581  }
582  else if(fBranchNames[branchIndex] == "MVDHitsStrip") {
583  recoinfo.SetNofMvdStripTrueHits(noftruehits[branchIndex]);
584  recoinfo.SetNofMvdStripFakeHits(noffakehits[branchIndex]);
585  recoinfo.SetNofMvdStripMissingHits(nofmissinghits[branchIndex]);
586  }
587  else if(fBranchNames[branchIndex] == "STTHit") {
588  recoinfo.SetNofSttTrueHits(noftruehits[branchIndex]);
589  recoinfo.SetNofSttFakeHits(noffakehits[branchIndex]);
590  recoinfo.SetNofSttMissingHits(nofmissinghits[branchIndex]);
591  }
592  else if(fBranchNames[branchIndex] == "GEMHit") {
593  recoinfo.SetNofGemTrueHits(noftruehits[branchIndex]);
594  recoinfo.SetNofGemFakeHits(noffakehits[branchIndex]);
595  recoinfo.SetNofGemMissingHits(nofmissinghits[branchIndex]);
596  }
597 
598  }
599 
600  recoinfo.SetMCTrackID(mctrackId);
601  return recoinfo;
602 }
Int_t GetFlag() const
Definition: PndTrack.h:33
int nHits
Definition: RiemannTest.C:16
PndMCTrack * track
Definition: anaLmdCluster.C:89
FairTrackParP GetParamLast()
Definition: PndTrack.h:50
PndSdsMCPoint * hit
Definition: anasim.C:70
PndTrackCand * GetTrackCandPtr()
Definition: PndTrack.h:48
FairTrackParP GetParamFirst()
Definition: PndTrack.h:49
Int_t PndTrackingQualityBarrelAnalysisNewLinks::GetSumOfAllValidMCHits ( FairMultiLinkedData *  trackData)
private

Definition at line 345 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References fBranchNames, and ioman.

Referenced by AnalyseTrackInfo().

346 {
347  Int_t result = 0;
348  for (unsigned int branchIndex = 0; branchIndex < fBranchNames.size(); branchIndex++){
349  if (fBranchNames[branchIndex] == "GEMHit"){
350  FairMultiLinkedData gemHits = trackData->GetLinksWithType(ioman->GetBranchId("GEMPoint"));
351  result += gemHits.GetNLinks();
352  } else {
353  result += trackData->GetLinksWithType(ioman->GetBranchId(fBranchNames[branchIndex])).GetNLinks();
354  }
355  }
356  return result;
357 }
std::map<Int_t, Int_t> PndTrackingQualityBarrelAnalysisNewLinks::GetTrackIdMCId ( )
inline

Definition at line 184 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

References fTrackIdMCId.

184 {return fTrackIdMCId;}
std::map<Int_t, Int_t> PndTrackingQualityBarrelAnalysisNewLinks::GetTrackMCStatus ( )
inline

Definition at line 176 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

References fMapTrackMCStatus.

Referenced by PndTrackingQualityBarrelTaskNewLinks::Exec().

176 {return fMapTrackMCStatus;}
std::map<Int_t, Int_t> PndTrackingQualityBarrelAnalysisNewLinks::GetTrackQualification ( )
inline

Definition at line 175 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

References fMapTrackQualification.

Referenced by PndTrackingQualityBarrelTaskNewLinks::Exec().

175 {return fMapTrackQualification;}
void PndTrackingQualityBarrelAnalysisNewLinks::Init ( )
virtual

Definition at line 68 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References AddHitsBranchName(), fBranchNames, fIdealTrack, fIdealTrackName, fMCTrack, fPossibleTrack, fTrack, fTrackBranchName, and ioman.

Referenced by PndTrackingQualityBarrelTaskNewLinks::Exec().

69 {
70  ioman = FairRootManager::Instance();
71  if (!ioman) {
72  std::cout << "-E- PndTrackingQualityTask::Init: "
73  << "RootManager not instantiated!" << std::endl;
74  return;
75  }
76 
77  fTrack = (TClonesArray*) ioman->GetObject(fTrackBranchName);
78  fMCTrack = (TClonesArray*) ioman->GetObject("MCTrack");
79  fIdealTrack = (TClonesArray*) ioman->GetObject(fIdealTrackName);
80  fIdealTrack = (TClonesArray*) ioman->GetObject(fIdealTrackName);
81 
82 
83  if (fBranchNames.size() == 0){
84  AddHitsBranchName("MVDHitsPixel");
85  AddHitsBranchName("MVDHitsStrip");
86  AddHitsBranchName("STTHit");
87  AddHitsBranchName("GEMHit");
88 
89  // if (FairRootManager::Instance()->GetBranchId("CorrectedSkewedHits") > 0){
90  // AddHitsBranchName("CorrectedSkewedHits");
91  // }
92  }
93  std::cout << "-I- PndTrackingQualityBarrelAnalysisNewLinks::Init: PossibleTrackFunctor: ";
94  fPossibleTrack->Print();
95 }
Bool_t PndTrackingQualityBarrelAnalysisNewLinks::IsBarrelMVD ( FairMultiLinkedData &  links,
int  iHit 
)
static

Definition at line 604 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References Double_t, fabs(), PndSdsHit::GetSensorID(), gGeoManager, hit, and PndGeoHandling::Instance().

Referenced by NBarrelMVD().

605 {
606  if( iHit<0 || iHit>=links.GetNLinks() ){
607  std::cout << "IsBarrelMVD():: iHit " << iHit << " is out of range [0," << links.GetNLinks() <<"]"<< std::endl;
608  return 0;
609  }
610  FairLink link = links.GetLink(iHit);
611  const PndSdsHit *hit = dynamic_cast<const PndSdsHit*>( links.GetData(link) );
612  if(!hit) {
613  std::cout << "IsBarrelMVD():: iHit " << iHit << " " << link.GetIndex() << " is FAKE" << std::endl;
614  return 0;
615  }
616  Int_t sensorID = hit->GetSensorID();
617  gGeoManager->cd(PndGeoHandling::Instance()->GetPath(sensorID));
618  TGeoHMatrix* transMat = gGeoManager->GetCurrentMatrix();
619  if( !transMat ){
620  std::cout<<"\n\nIsBarrelMVD():: NO transition Matrix for MVD sensor "<<sensorID<<"\n\n!!!"<<std::endl;
621  return 0;
622  }
623  Double_t *mmm = transMat->GetRotationMatrix();
624  if( !mmm ){
625  std::cout<<"\n\nIsBarrelMVD():: Can not extract transition Matrix for MVD sensor "<<sensorID<<", something is completely wrong\n\n!!!"<<std::endl;
626  return 0;
627  }
628  bool forward = ( fabs(mmm[6]) < 0.999 && fabs(mmm[7]) < 0.999 );
629  return ( !forward );
630 }
TGeoManager * gGeoManager
Double_t
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
static PndGeoHandling * Instance()
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetSensorID() const
Definition: PndSdsHit.h:90
Bool_t PndTrackingQualityBarrelAnalysisNewLinks::IsBetterTrackExisting ( Int_t &  mcIndex,
int  quality 
)
private

Definition at line 464 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References fMapTrackQualification.

465 {
466  if (fMapTrackQualification.count(mcIndex) == 1){
467  if (fMapTrackQualification[mcIndex] > 0 && fMapTrackQualification[mcIndex] > quality) return true;
468  }
469  return false;
470 }
Int_t PndTrackingQualityBarrelAnalysisNewLinks::NBarrelMVD ( FairMultiLinkedData &  links)
static

Definition at line 632 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References IsBarrelMVD().

Referenced by GetNIdealHits().

633 {
634  int nBarrel = 0;
635  for( Int_t ihit=0; ihit<links.GetNLinks(); ihit++ ){
636  if( IsBarrelMVD( links, ihit ) ) nBarrel++;
637  }
638  return nBarrel;
639 }
void PndTrackingQualityBarrelAnalysisNewLinks::PrintTrackDataSummary ( FairMultiLinkedData &  trackData,
Bool_t  detailedInfo = kFALSE 
)

Definition at line 408 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References fBranchNames, GetNIdealHits(), ioman, and TString.

Referenced by AnalyseTrackInfo(), and PrintTrackQualityMap().

409 {
410  if (detailedInfo == kTRUE) std::cout << std::endl;
411  for (unsigned int branchIndex = 0; branchIndex < fBranchNames.size(); branchIndex++){
412  TString branchName = fBranchNames[branchIndex];
413  std::cout << branchName << " " << GetNIdealHits(trackData, branchName);
414  if (detailedInfo == kTRUE){
415  std::cout << " : ";
416  if (trackData.GetLinksWithType(ioman->GetBranchId(branchName)).GetNLinks() > 0)
417  std::cout << trackData.GetLinksWithType(ioman->GetBranchId(branchName));
418  std::cout << std::endl;
419  } else {
420  std::cout << " | ";
421  }
422  }
423  std::cout << std::endl;
424 }
void PndTrackingQualityBarrelAnalysisNewLinks::PrintTrackInfo ( std::map< TString, FairMultiLinkedData >  info)

Definition at line 450 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References i.

Referenced by AnalyseTrackCand().

451 {
452  std::cout << "TrackInfo: (MC-ID/NHits) : ";
453  for (std::map<TString, FairMultiLinkedData>::iterator iter = info.begin(); iter != info.end(); iter++){
454  std::cout << iter->first;
455  for (int i = 0; i < iter->second.GetNLinks(); i++){
456  std::cout << " : (" << iter->second.GetLink(i).GetIndex() << "/" << iter->second.GetLink(i).GetWeight() << ")";
457  }
458  std::cout << " || ";
459  }
460  std::cout << std::endl;
461 }
Int_t i
Definition: run_full.C:25
void PndTrackingQualityBarrelAnalysisNewLinks::PrintTrackMCStatusMap ( )

Definition at line 439 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References fMapTrackMCStatus, and fMCTrackFound.

440 {
441  std::cout << "PrintTrackMCStatusMap: " << std::endl;
442  for (std::map<Int_t, Int_t>::iterator iter = fMapTrackMCStatus.begin(); iter != fMapTrackMCStatus.end(); iter++){
443  std::cout << "TrackID: " << iter->first << " Quality: " << iter->second << " Found: " << fMCTrackFound[iter->first];
444  std::cout << std::endl;
445  }
446  std::cout << std::endl;
447 }
void PndTrackingQualityBarrelAnalysisNewLinks::PrintTrackQualityMap ( Bool_t  detailedInfo = kFALSE)

The description of the quality map IDs is now located a but further up, at struct qualityNumbers

Definition at line 427 of file PndTrackingQualityBarrelAnalysisNewLinks.cxx.

References fIdealTrack, fMapTrackMCStatus, fMapTrackQualification, fMCIdIdealTrackId, fMCTrackFound, and PrintTrackDataSummary().

Referenced by AnalyseEvent(), and PndTrackingQualityBarrelTaskNewLinks::Exec().

428 {
429  for (std::map<Int_t, Int_t>::iterator iter = fMapTrackQualification.begin(); iter != fMapTrackQualification.end(); iter++){
430  std::cout << "TrackID: " << iter->first << " MCQuality: " << fMapTrackMCStatus[iter->first] << " Quality: " << iter->second << " Found: " << fMCTrackFound[iter->first] << " MCData: ";
431  if (fMCIdIdealTrackId.count(iter->first) > 0){
432  PndTrackCand* trackCand = ((PndTrack*)fIdealTrack->At(fMCIdIdealTrackId[iter->first]))->GetTrackCandPtr();
433  PrintTrackDataSummary(*trackCand->GetPointerToLinks(), detailedInfo);
434  }
435  }
436  std::cout << std::endl;
437 }
void PndTrackingQualityBarrelAnalysisNewLinks::SetHitsBranchNames ( std::vector< TString names)
inline
void PndTrackingQualityBarrelAnalysisNewLinks::SetVerbose ( Int_t  val)
inline

Member Data Documentation

std::vector<TString> PndTrackingQualityBarrelAnalysisNewLinks::fBranchNames
private
TClonesArray* PndTrackingQualityBarrelAnalysisNewLinks::fIdealTrack
private
TClonesArray* PndTrackingQualityBarrelAnalysisNewLinks::fIdealTrackCand
private

Definition at line 257 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

TString PndTrackingQualityBarrelAnalysisNewLinks::fIdealTrackName
private

Definition at line 229 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by Init().

std::map<Int_t, std::map<TString, std::pair<Double_t, Int_t> > > PndTrackingQualityBarrelAnalysisNewLinks::fMapEfficiencies
private

! MostProbable TrackId, BranchName, Efficiency, #FoundHits / #MCHits, #MCHits

Definition at line 246 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by CalcEfficiencies(), and GetEfficiencies().

std::map<Int_t, TVector3> PndTrackingQualityBarrelAnalysisNewLinks::fMapP
private

Definition at line 248 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by AnalyseEvent(), and GetP().

std::map<Int_t, Double_t> PndTrackingQualityBarrelAnalysisNewLinks::fMapPResolution
private

Definition at line 247 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by AnalyseEvent(), and GetPResolution().

std::map<Int_t, Double_t> PndTrackingQualityBarrelAnalysisNewLinks::fMapPResolutionRel
private

Definition at line 251 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by AnalyseEvent(), and GetPResolutionRel().

std::map<Int_t, Double_t> PndTrackingQualityBarrelAnalysisNewLinks::fMapPt
private

Definition at line 250 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by AnalyseEvent(), and GetPt().

std::map<Int_t, Double_t> PndTrackingQualityBarrelAnalysisNewLinks::fMapPtResolution
private

Definition at line 249 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by AnalyseEvent(), and GetPtResolution().

std::map<Int_t, Double_t> PndTrackingQualityBarrelAnalysisNewLinks::fMapPtResolutionRel
private

Definition at line 252 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by AnalyseEvent(), and GetPtResolutionRel().

std::map<Int_t, Int_t> PndTrackingQualityBarrelAnalysisNewLinks::fMapTrackMCStatus
private

! TrackId vs TrackStatus from MC

Definition at line 244 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by FillMapTrackQualifikation(), GetTrackMCStatus(), PrintTrackMCStatusMap(), and PrintTrackQualityMap().

std::map<Int_t, Int_t> PndTrackingQualityBarrelAnalysisNewLinks::fMapTrackQualification
private

! TrackId vs TrackStatus after analysis of track finding

Definition at line 245 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by AnalyseEvent(), AnalyseTrackInfo(), FillMapTrackQualifikation(), GetTrackQualification(), IsBetterTrackExisting(), and PrintTrackQualityMap().

std::map<Int_t, Int_t> PndTrackingQualityBarrelAnalysisNewLinks::fMCIdIdealTrackId
private
std::map<Int_t, Int_t> PndTrackingQualityBarrelAnalysisNewLinks::fMCIdTrackId
private

! map between MC id and track id

Definition at line 237 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by AnalyseEvent(), and AnalyseTrackInfo().

TClonesArray* PndTrackingQualityBarrelAnalysisNewLinks::fMCTrack
private
std::map<Int_t, Int_t> PndTrackingQualityBarrelAnalysisNewLinks::fMCTrackFound
private

! How often was a MC Track (key) found

Definition at line 240 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by AnalyseEvent(), GetMCTrackFound(), PrintTrackMCStatusMap(), and PrintTrackQualityMap().

Int_t PndTrackingQualityBarrelAnalysisNewLinks::fNGhosts
private

Definition at line 226 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by AnalyseTrackInfo(), and GetNGhosts().

Bool_t PndTrackingQualityBarrelAnalysisNewLinks::fPndTrackOrTrackCand
private

Definition at line 230 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by AnalyseEvent().

PossibleTrackFunctor* PndTrackingQualityBarrelAnalysisNewLinks::fPossibleTrack
private
TClonesArray* PndTrackingQualityBarrelAnalysisNewLinks::fTrack
private
TString PndTrackingQualityBarrelAnalysisNewLinks::fTrackBranchName
private

Definition at line 228 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by Init().

std::map<Int_t, Int_t> PndTrackingQualityBarrelAnalysisNewLinks::fTrackIdMCId
private

! map between track id and most probable MC track id

Definition at line 236 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Referenced by AnalyseEvent(), GetIdealTrackIdFromRecoTrackId(), and GetTrackIdMCId().

Bool_t PndTrackingQualityBarrelAnalysisNewLinks::fUseCorrectedSkewedHits
private

Definition at line 233 of file PndTrackingQualityBarrelAnalysisNewLinks.h.

Int_t PndTrackingQualityBarrelAnalysisNewLinks::fVerbose
private
FairRootManager* PndTrackingQualityBarrelAnalysisNewLinks::ioman
private

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