ATLAS Offline Software
TrackDistributions.cxx
Go to the documentation of this file.
1 
14 
15 // #include "Resplot/Effplot.h"
16 // #include "Resplot/Resplot.h"
17 
18 #include <cmath>
19 
20 
22  // book the histograms
23 
24  m_hchi2 = new TH1D(std::string(name()+"-chi2").c_str(),
25  std::string(name()+" chi2 distribution").c_str(), 100, 0.0, 50.0);
26  m_heta = new TH1D(std::string(name()+"-eta").c_str(),
27  std::string(name()+" eta distribution").c_str(), 100, -3.0, 3.0);
28  m_hphi = new TH1D(std::string(name()+"-phi").c_str(),
29  std::string(name()+" phi distribution").c_str(), 100, -3.1416, 3.1416);
30  m_hz0 = new TH1D(std::string(name()+"-z0").c_str(),
31  std::string(name()+" z0 distribution").c_str(), 100, -1000.0, 1000.0);
32  m_hd0 = new TH1D(std::string(name()+"-d0").c_str(),
33  std::string(name()+" d0 distribution").c_str(), 100, -500.0, 500.0);
34  m_hpT = new TH1D(std::string(name()+"-pT").c_str(),
35  std::string(name()+" pT distribution").c_str(), 100, -100000, 100000);
36  m_hdeta = new TH1D(std::string(name()+"-deta").c_str(),
37  std::string(name()+" eta error distribution").c_str(), 100, 0, 0.2);
38  m_hdphi = new TH1D(std::string(name()+"-dphi").c_str(),
39  std::string(name()+" phi error distribution").c_str(), 100, 0, 0.2);
40  m_hdz0 = new TH1D(std::string(name()+"-dz0").c_str(),
41  std::string(name()+" z0 error distribution").c_str(), 100, 0, 1.0);
42  m_hdd0 = new TH1D(std::string(name()+"-dd0").c_str(),
43  std::string(name()+" d0 error distribution").c_str(), 100, 0, 0.5);
44  m_hdpT = new TH1D(std::string(name()+"-dpT").c_str(),
45  std::string(name()+" pT error distribution").c_str(), 100, 0, 10000);
46  m_hblayer = new TH1D(std::string(name()+"-blayer").c_str(),
47  std::string(name()+" blayer distribution").c_str(), 10, 0, 10.0);
48  m_hpixel = new TH1D(std::string(name()+"-pixel").c_str(),
49  std::string(name()+" pixel distribution").c_str(), 10, 0, 10.0);
50  m_hsct = new TH1D(std::string(name()+"-sct").c_str(),
51  std::string(name()+" sct distribution").c_str(), 10, 0, 10.0);
52  m_hsilicon = new TH1D(std::string(name()+"-silicon").c_str(),
53  std::string(name()+" silicon distribution").c_str(), 10, 0, 10.0);
54  m_hstraw = new TH1D(std::string(name()+"-straw").c_str(),
55  std::string(name()+" straw distribution").c_str(), 40, 0, 40.0);
56  m_htr = new TH1D(std::string(name()+"-tr").c_str(),
57  std::string(name()+" tr distribution").c_str(), 40, 0, 40.0);
58 
59 
60 }
61 
62 
63 
64 void TrackDistributions::execute( const std::vector<TIDA::Track*>& /*reftracks*/,
65  const std::vector<TIDA::Track*>& testtracks,
66  TrackAssociator* /*matcher*/ )
67 {
68  std::cout << "execute() " << name() << std::endl;
69 
70  // for ( int i=0 ; i<reftracks.size() ; i++ ) std::cout << i << " " << *reftracks[i] << " ref" << std::endl;
71  // for ( int i=0 ; i<testtracks.size() ; i++ ) std::cout << i << " " << *testtracks[i] << " tst" << std::endl;
72 
73  // for an efficiency, we want at most 1 matching reco track
74  // for each true track
75  // for a purity, we want at most 1 true track for each
76  // reconstructed track
77  // for a resolution we only want to consider matched pairs
78  // of tracks
79 
80  // this is just filling the distributions of tracks
81  // with no matching or nothin'
82 
83  for ( unsigned i=testtracks.size() ; i-- ; ) {
84 
85 #if 0
86  std::cout << "SUTT pt distribution "
87  << "\tpt=" << reftracks[i]->pT()
88  << "\tpTr=" << testtracks[i]->pT()
89  << "\t1/pTt=" << 1/testpTt
90  << "\tDpT=" << pTt-pTr
91  << "\tD1/pT=" << 1/pTt-1/pTr
92  << std::endl;
93 #endif
94 
95  std::cout << "SUTT pt distribution " << *testtracks[i] << std::endl;
96 
97  m_hchi2->Fill( testtracks[i]->chi2() );
98 
99  m_heta->Fill( testtracks[i]->eta() );
100  m_hphi->Fill( testtracks[i]->phi() );
101 
102  m_hz0->Fill( testtracks[i]->z0() );
103 
104  m_hd0->Fill( testtracks[i]->a0() );
105  m_hpT->Fill( testtracks[i]->pT() );
106 
107  m_hdeta->Fill( testtracks[i]->deta() );
108  m_hdphi->Fill( testtracks[i]->dphi() );
109 
110  m_hdz0->Fill( testtracks[i]->dz0() );
111  m_hdd0->Fill( testtracks[i]->da0() );
112  m_hdpT->Fill( testtracks[i]->dpT() );
113 
114  m_hblayer->Fill( testtracks[i]->bLayerHits() );
115  m_hpixel->Fill( testtracks[i]->pixelHits() );
116  m_hsct->Fill( testtracks[i]->sctHits() );
117  m_hsilicon->Fill( testtracks[i]->siHits() );
118 
119  m_hstraw->Fill( testtracks[i]->strawHits() );
120  m_htr->Fill( testtracks[i]->trHits() );
121 
122 
123 
124  }
125 
126 }
127 
128 
129 
131  // sort out all the histograms and write them out
132  std::cout << "SUTT TrackDistributions::finalise() " << name() << std::endl;
133 
134 #if 0
135  gDirectory->pwd();
136  Directory d(name());
137  d.push();
138 
139  d.pop();
140 
141 #endif
142 }
143 
TrackDistributions::m_hd0
TH1D * m_hd0
Definition: TrackDistributions.h:47
TIDA::Associator
Definition: TIDAAssociator.h:24
CalculateHighPtTerm.pT
pT
Definition: ICHEP2016/CalculateHighPtTerm.py:57
Track.h
TrackDistributions::m_hsct
TH1D * m_hsct
Definition: TrackDistributions.h:60
TrackEfficiency.h
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
TrackDistributions::m_hdd0
TH1D * m_hdd0
Definition: TrackDistributions.h:53
TrackDistributions::m_hstraw
TH1D * m_hstraw
Definition: TrackDistributions.h:62
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
hist_file_dump.d
d
Definition: hist_file_dump.py:137
TrackDistributions::m_hdpT
TH1D * m_hdpT
Definition: TrackDistributions.h:54
Directory
Definition: Directory.h:29
TH1D
Definition: rootspy.cxx:342
TrackDistributions.h
TrackDistributions::execute
virtual void execute(const std::vector< TIDA::Track * > &tracks1, const std::vector< TIDA::Track * > &tracks2, TrackAssociator *matcher)
Definition: TrackDistributions.cxx:64
TrackDistributions::m_hdphi
TH1D * m_hdphi
Definition: TrackDistributions.h:51
TrackDistributions::m_hblayer
TH1D * m_hblayer
Definition: TrackDistributions.h:58
TrackDistributions::m_htr
TH1D * m_htr
Definition: TrackDistributions.h:63
ParseInputs.gDirectory
gDirectory
Definition: Final2012/ParseInputs.py:133
TrackDistributions::m_hphi
TH1D * m_hphi
Definition: TrackDistributions.h:45
lumiFormat.i
int i
Definition: lumiFormat.py:92
TrackDistributions::m_hz0
TH1D * m_hz0
Definition: TrackDistributions.h:46
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
TrackAnalysis::name
std::string name() const
return identifier
Definition: TrackAnalysis.h:48
TrackDistributions::m_hdz0
TH1D * m_hdz0
Definition: TrackDistributions.h:52
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
a0
double a0
Definition: globals.cxx:27
TrackDistributions::m_hchi2
TH1D * m_hchi2
Definition: TrackDistributions.h:56
TrackDistributions::initialise
virtual void initialise()
standard operation interface
Definition: TrackDistributions.cxx:21
TrackDistributions::m_heta
TH1D * m_heta
Definition: TrackDistributions.h:44
TrackDistributions::finalise
virtual void finalise()
Definition: TrackDistributions.cxx:130
TrackDistributions::m_hpT
TH1D * m_hpT
Definition: TrackDistributions.h:48
TrackDistributions::m_hsilicon
TH1D * m_hsilicon
Definition: TrackDistributions.h:61
TrackDistributions::m_hpixel
TH1D * m_hpixel
Definition: TrackDistributions.h:59
TrackDistributions::m_hdeta
TH1D * m_hdeta
Definition: TrackDistributions.h:50