PandaRoot
PndTrackingQualityBarrelTaskNewLinks.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 // -------------------------------------------------------------------------
14 // ----- PNDMCMATCHSELECTORTASK header file -----
15 // ----- Created 18/01/10 by T.Stockmanns -----
16 // -------------------------------------------------------------------------
17 
24 #ifndef PndTrackingQualityBarrelTaskNewLinks_H
25 #define PndTrackingQualityBarrelTaskNewLinks_H
26 
27 // framework includes
28 #include "FairTask.h"
29 #include "PndDetectorList.h"
30 #include "PndTrackCand.h"
32 #include "PndGeoSttPar.h"
33 #include "TH2.h"
34 #include "THStack.h"
35 #include "RhoTuple.h"
36 
37 #include <vector>
38 #include <map>
39 
40 class TClonesArray;
41 class PndTrack;
42 
43 class PndTrackingQualityBarrelTaskNewLinks : public FairTask {
44  public:
46  PndTrackingQualityBarrelTaskNewLinks(TString trackBranchName, TString idealBranchName, Bool_t pndTrackData = kTRUE);
47 
50 
52  virtual void SetParContainers();
53  virtual InitStatus Init();
54 
56  virtual void Exec(Option_t *opt);
57 
58  virtual void Finish();
59 
60  void SetIdealTrackBranchName(TString name) { fIdealTrackBranchName = name; };
61 
63  void SetTrackBranchName(TString name, Bool_t pndTrackData = kTRUE)
64  {
65  fPndTrackOrTrackCand = pndTrackData;
66  fTrackBranchName = name;
67  } // alternatively PndTrackCandData can be analysed. Therefore pndTrackData has to be set to kFALSE
68 
70  void AddHitsBranchName(TString name) { fBranchNames.push_back(name); }
71 
72  void SetOutputMCInfoBranchName(TString name) { fMCInfoBranchName = name; }
73  void SetOutputRecoInfoBranchName(TString name) { fRecoInfoBranchName = name; }
74 
75  private:
76  //
77  // virtual void FillMapTrackQualifikation();
78 
87  virtual void FillQualyHisto(std::map<Int_t, Int_t> trackQualifikation, Int_t nGhosts);
88  virtual void FillMCStatus(std::map<Int_t, Int_t> trackMCStatus);
89  virtual void FillEfficiencies(std::map<Int_t, std::map<TString, std::pair<Double_t, Int_t>>> efficiencies);
90  virtual void MapToHist(std::map<Int_t, Double_t>, TH1 *);
91 
92  virtual Int_t GetSumOfAllValidMCHits(FairMultiLinkedData *trackData);
93 
94  void AssociateRecoTracksToMCTracks();
95 
96  PndTrackingQualityMCInfo GetMCInfoFromIdealTrack(PndTrack *idealtrack);
97  Int_t GetMCInfoIdFromIdealTrackId(int idealtrackid) { return fMCInfoIdIdealId[idealtrackid]; }
98 
99  void InitializeHistograms();
100  void LabelQualyHistogram(TH1 *);
101  void ColorHistogram();
102  std::vector<TString> fBranchNames;
103  TString fMCInfoBranchName, fRecoInfoBranchName;
104 
105  std::map<TString, FairMultiLinkedData> fMapLinkData;
106  // std::map<TString, Double_t> fPossibleTrackParameter;
107  std::map<TString, TH2 *> fMapEfficiencies;
108 
109  std::map<int, int> fMCInfoIdIdealId;
110 
111  Int_t fNGhosts;
112 
113  TClonesArray *fTrack;
114  TClonesArray *fMCTrack;
115  TClonesArray *fTrackCand;
116  // TClonesArray* fIdealTrackCand;
117  TClonesArray *fSttHitArray;
118  TClonesArray *fMCTrackInfo;
119  TClonesArray *fRecoTrackInfo;
120  TClonesArray *fIdealTrack;
121  TClonesArray *fSttTubeArray;
122 
123  FairRootManager *ioman;
124 
125  std::map<Int_t, Int_t> fMapTrackQualifikation;
126 
127  TString fTrackBranchName;
128  TString fIdealTrackBranchName;
129  Bool_t fPndTrackOrTrackCand; // kTRUE if track and kFALSE if track cand
130  PndGeoSttPar *fSttParameters;
131 
132  RhoTuple *fTuple;
133 
134  TH1 *fPHisto;
135  TH1 *fPRelHisto;
136  TH1 *fPtHisto;
137  TH1 *fPtRelHisto;
138  TH1 *fQualyHisto;
139  THStack *fQualyStack;
140  TH1 *fQualyHisto_mc;
141  TH1 *fQualyHisto_neg;
142  TH1 *fQualyHisto_pos;
143  TH1 *fQualyHisto_all;
144 
145  Int_t fEventNr;
146 
147  void Register();
148 
149  void Reset();
150 
152 };
153 
154 #endif