ATLAS Offline Software
Loading...
Searching...
No Matches
LArHitsTestTool Class Reference

#include <LArHitsTestTool.h>

Inheritance diagram for LArHitsTestTool:
Collaboration diagram for LArHitsTestTool:

Public Member Functions

 LArHitsTestTool (const std::string &type, const std::string &name, const IInterface *parent)
virtual StatusCode initialize () override
virtual StatusCode processEvent () override

Protected Attributes

std::string m_detname
double m_edep_cut
TH1 * m_lar_eta
TH1 * m_lar_phi
TH2 * m_lar_zr
TH2 * m_lar_etaphi
TH2 * m_lar_edep_zr
TH1 * m_eta
TH1 * m_phi
TH2 * m_zr
TH2 * m_etaphi
TH1 * m_time
TH1 * m_edep
TH1 * m_log_edep
TH2 * m_edep_zr
TH1 * m_eta_cut1
TH1 * m_phi_cut1
TH2 * m_zr_cut1
TH2 * m_etaphi_cut1
TH1 * m_time_cut1
TH1 * m_edep_cut1
TH2 * m_edep_zr_cut1
TH1 * m_etot
TH1 * m_edep_eta
TH1 * m_edep_phi
TH1 * m_edep_z
TH1 * m_edep_r
TH1 * m_etot_eta
TH1 * m_etot_phi
std::string m_path {"/truth/"}
ServiceHandle< ITHistSvc > m_histSvc {"THistSvc", "SimTestHisto"}

Private Attributes

SG::ReadCondHandleKey< CaloDetDescrManagerm_caloMgrKey

structors and AlgTool implementation

std::string m_key
 The MC truth key.
HepMC::ConstGenParticlePtr getPrimary ()

Detailed Description

Definition at line 12 of file LArHitsTestTool.h.

Constructor & Destructor Documentation

◆ LArHitsTestTool()

LArHitsTestTool::LArHitsTestTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 17 of file LArHitsTestTool.cxx.

18 : SimTestToolBase(type, name, parent),
19 m_detname("EMB"),
20 m_lar_eta(0), m_lar_phi(0),
23 m_eta(0), m_phi(0),
24 m_zr(0), m_etaphi(0),
25 m_time(0), m_edep(0), m_log_edep(0),
26 m_edep_zr(0),
31 m_etot(0),
33 m_edep_z(0), m_edep_r(0),
35{
36 declareProperty("EDepCut", m_edep_cut=0.1);
37 declareProperty("DetectorName", m_detname="EMB");
38}
std::string m_detname
SimTestToolBase(const std::string &type, const std::string &name, const IInterface *parent)

Member Function Documentation

◆ getPrimary()

HepMC::ConstGenParticlePtr SimTestToolBase::getPrimary ( )
protectedinherited

Definition at line 20 of file SimTestToolBase.cxx.

21{
22 const McEventCollection* mcCollection;
23 if (evtStore()->retrieve(mcCollection,m_key).isSuccess()) {
25 for (e=mcCollection->begin();e!=mcCollection->end(); ++e) {
26 for (auto p : (**e)) {
28 return p;
29 }
30 }
31 }
32 }
33 return 0;
34}
DataModel_detail::const_iterator< DataVector > const_iterator
Standard const_iterator.
Definition DataVector.h:838
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
std::string m_key
The MC truth key.
bool is_simulation_particle(const T &p)
Method to establish if a particle (or barcode) was created during the simulation (TODO update to be s...
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ initialize()

StatusCode LArHitsTestTool::initialize ( )
overridevirtual

Reimplemented from SimTestToolBase.

Reimplemented in EMBHitsTestTool, EMECHitsTestTool, FCALHitsTestTool, and HECHitsTestTool.

Definition at line 40 of file LArHitsTestTool.cxx.

41{
42 ATH_CHECK(m_caloMgrKey.initialize());
43
44 m_path+="LAr/";
45 // all LAr detectors
46 _TH1D(m_lar_eta,"lar_eta",25,-5.,5.);
47 _SET_TITLE(m_lar_eta, "LAr hit distribution","eta","dN/deta");
48 _TH1D(m_lar_phi,"lar_phi",25,-M_PI,M_PI);
49 _SET_TITLE(m_lar_phi, "LAr hit distribution","phi","dN/dphi");
50
51 _TH2D(m_lar_zr,"lar_zr",100,-5200.,5200.,100,0.,3000.);
52 _SET_TITLE(m_lar_zr, "LAr hit distribution","z [mm]","r [mm]");
53 _TH2D(m_lar_etaphi,"lar_etaphi",100,-5.,5.,100,-M_PI,M_PI);
54 _SET_TITLE(m_lar_etaphi, "LAr hit distribution","eta", "phi");
55 _TH2D(m_lar_edep_zr,"lar_edep_zr",100,-5200.,5200.,100,0.,3000.);
56 _SET_TITLE(m_lar_edep_zr, "LAr energy weighted hit distribution","z [mm]", "r [mm]");
57
58 // variables specific to sub detector (root histo names have to be unique!)
59 m_path+=m_detname+"/";
60 _TH1D(m_eta,(m_detname+"_eta").c_str(),25,-5.,5.);
61 _SET_TITLE(m_eta, "hit distribution","eta","dN/deta");
62 _TH1D(m_phi,(m_detname+"_phi").c_str(),25,-M_PI,M_PI);
63 _SET_TITLE(m_phi, "hit distribution","phi","dN/dphi");
64
65 _TH2D(m_zr,(m_detname+"_zr").c_str(),100,-5200.,5200.,100,0.,3000.);
66 _SET_TITLE(m_zr, "hit distribution","z [mm]","r [mm]");
67 _TH2D(m_etaphi,(m_detname+"_etaphi").c_str(),100,-5.,5.,100,-M_PI,M_PI);
68 _SET_TITLE(m_etaphi, "hit distribution","eta", "phi");
69 _TH1D_WEIGHTED(m_time,(m_detname+"_time").c_str(),100,0,25);
70 _SET_TITLE(m_time, "energy weighted hit distribution","t [ns]","dE/dt");
71
72 _TH1D(m_edep,(m_detname+"_edep").c_str(),100,0,10.);
73 _SET_TITLE(m_edep, "hit distribution","edep [MeV]","dN/dE [1/MeV]");
74 _TH1D(m_log_edep,(m_detname+"_log_edep").c_str(),100,-15.,8.);
75 _SET_TITLE(m_log_edep, "logarithm of energy deposits","log(edep [MeV])","dN/dlog(E) [1/log(MeV)]");
76 _TH2D_WEIGHTED(m_edep_zr,(m_detname+"_edep_zr").c_str(),100,-5200.,5200.,100,0.,3000.);
77 _SET_TITLE(m_edep_zr, "energy weighted hit distribution","z [mm]", "r [mm]");
78
79 // ----------------------------------------
80 _TH1D(m_eta_cut1,(m_detname+"_eta_cut").c_str(),25,-5.,5.);
81 _SET_TITLE(m_eta, "hit distribution","eta","dN/deta");
82 _TH1D(m_phi_cut1,(m_detname+"_phi_cut").c_str(),25,-M_PI,M_PI);
83 _SET_TITLE(m_phi, "hit distribution","phi","dN/dphi");
84
85 _TH2D(m_zr_cut1,(m_detname+"_zr_cut").c_str(),100,-5200.,5200.,100,0.,3000.);
86 _SET_TITLE(m_zr, "hit distribution","z [mm]","r [mm]");
87 _TH2D(m_etaphi_cut1,(m_detname+"_etaphi_cut").c_str(),100,-5.,5.,100,-M_PI,M_PI);
88 _SET_TITLE(m_etaphi, "hit distribution","eta", "phi");
89
90 _TH1D_WEIGHTED(m_time_cut1,(m_detname+"_time_cut").c_str(),100,0,25);
91 _SET_TITLE(m_time, "energy weighted hit distribution","t [ns]","dE/dt");
92 _TH1D(m_edep_cut1,(m_detname+"_edep_cut").c_str(),100,0,10.);
93 _SET_TITLE(m_edep_cut1, "hit distribution","edep [MeV]","dN/dE [1/MeV]");
94 _TH2D_WEIGHTED(m_edep_zr_cut1,(m_detname+"_edep_zr_cut").c_str(),100,-5200.,5200.,100,0.,3000.);
95 _SET_TITLE(m_edep_zr, "energy weighted hit distribution","z [mm]", "r [mm]");
96
97 // ----------------------------------------
98 _TH1D(m_etot,(m_detname+"_etot").c_str(),100,0.,500.);
99 _SET_TITLE(m_etot, "distribution total energy deposit per event","E_tot [MeV]","1/dE");
100 _TH1D_WEIGHTED(m_edep_eta,(m_detname+"_edep_eta").c_str(),25,-5.,5.);
101 _SET_TITLE(m_edep_eta, "energy weighted hit distribution","eta","dE/deta");
102 _TH1D_WEIGHTED(m_edep_phi,(m_detname+"_edep_phi").c_str(),25,-M_PI,M_PI);
103 _SET_TITLE(m_edep_phi, "energy weighted hit distribution","phi","dE/deta");
104 _TH1D_WEIGHTED(m_edep_z,(m_detname+"_edep_z").c_str(),100,-5200.,5200.);
105 _SET_TITLE(m_edep_z, "energy weighted hit distribution","z [mm]","dE/dz");
106 _TH1D_WEIGHTED(m_edep_r,(m_detname+"_edep_r").c_str(),100,0.,3000.);
107 _SET_TITLE(m_edep_r, "energy weighted hit distribution","r [mm]","dE/dr");
108 _TPROFILE(m_etot_eta,(m_detname+"_etot_eta").c_str(),25,-5.,5.);
109 _SET_TITLE(m_etot_eta, "tot energy deposited per Event vs generator truth","eta","1/N dE/deta [MeV]");
110 _TPROFILE(m_etot_phi,(m_detname+"_etot_phi").c_str(),25,-M_PI,M_PI);
111 _SET_TITLE(m_etot_phi, "tot energy deposited per Event vs generator truth","phi","1/N dE/dphi [MeV]");
112
113 return StatusCode::SUCCESS;
114}
#define M_PI
#define ATH_CHECK
Evaluate an expression and check for errors.
#define _TH2D_WEIGHTED(var, name, nbinx, xmin, xmax, nbiny, ymin, ymax)
#define _TH1D_WEIGHTED(var, name, nbin, xmin, xmax)
#define _TH2D(var, name, nbinx, xmin, xmax, nbiny, ymin, ymax)
#define _TH1D(var, name, nbin, xmin, xmax)
#define _SET_TITLE(var, title, xaxis, yaxis)
#define _TPROFILE(var, name, nbin, xmin, xmax)
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloMgrKey
std::string m_path

◆ processEvent()

StatusCode LArHitsTestTool::processEvent ( )
overridevirtual

Definition at line 116 of file LArHitsTestTool.cxx.

116 {
117 SG::ReadCondHandle<CaloDetDescrManager> caloMgrHandle{m_caloMgrKey};
118 ATH_CHECK(caloMgrHandle.isValid());
119 const CaloDetDescrManager* caloMgr = *caloMgrHandle;
120
121 std::string lArkey = "LArHit"+m_detname;
122
123 double etot=0;
124 const LArHitContainer* hitContainer = evtStore()->tryConstRetrieve<LArHitContainer>(lArkey);
125 if(hitContainer) {
126 for(const LArHit* larHit : *hitContainer) {
127 const CaloDetDescrElement* ddElement = caloMgr->get_element(larHit->cellID());
128
129 double eta = ddElement->eta();
130 double phi = ddElement->phi();
131 double radius = ddElement->r();
132 double z = ddElement->z();
133
134 double energy = larHit->energy();
135
136 m_lar_eta->Fill(eta);
137 m_lar_phi->Fill(phi);
138 m_lar_zr->Fill(z,radius);
139 m_lar_etaphi->Fill(eta,phi);
140 m_lar_edep_zr->Fill(z,radius,energy);
141
142
143 m_eta->Fill(eta);
144 m_phi->Fill(phi);
145 m_time->Fill( larHit->time(),energy);
146 m_edep->Fill( energy);
147 m_log_edep->Fill( energy > 0 ? log(energy) : -1 );
148
149 m_zr->Fill(z,radius);
150 m_etaphi->Fill(eta,phi);
151 m_edep_zr->Fill(z,radius,energy);
152
153 m_edep_eta->Fill(eta,energy);
154 m_edep_phi->Fill(phi,energy);
155
156 m_edep_z->Fill(z,energy);
157 m_edep_r->Fill(radius,energy);
158
159 etot+=energy;
160
161 if (larHit->energy()>m_edep_cut) {
162 m_eta_cut1->Fill(eta);
163 m_phi_cut1->Fill(phi);
164 m_time_cut1->Fill( larHit->time(), larHit->energy());
165 m_edep_cut1->Fill( larHit->energy());
166
167 m_zr_cut1->Fill(z,radius);
168 m_etaphi_cut1->Fill(eta,phi);
169 m_edep_zr_cut1->Fill(z,radius,larHit->energy());
170 }
171 }
172 }
173
174 //For FastCaloSim Container with _Fast postfix, just try to retrieve, if exist, collect information from this container, it not just skip it.
175
177 const std::string lArkey_fast="LArHit"+m_detname+"_Fast";
178
179 const LArHitContainer* iter_fast;
180 if( evtStore()->contains<LArHitContainer>(lArkey_fast) &&
181 (evtStore()->retrieve(iter_fast,lArkey_fast)).isSuccess())
182 {
183 ATH_MSG_DEBUG ( "Read hit info from FastCaloSim Container" );
184 for(hi_fast=(*iter_fast).begin();hi_fast!=(*iter_fast).end();++hi_fast)
185 {
186 const LArHit* larHit = *hi_fast;
187 const CaloDetDescrElement* ddElement = caloMgr->get_element(larHit->cellID());
188 double eta=ddElement->eta();
189 double phi=ddElement->phi();
190 double radius=ddElement->r();
191 double z=ddElement->z();
192 double energy=larHit->energy();
193
194 m_lar_eta->Fill(eta);
195 m_lar_phi->Fill(phi);
196 m_lar_zr->Fill(z,radius);
197 m_lar_etaphi->Fill(eta,phi);
198 m_lar_edep_zr->Fill(z,radius,energy);
199
200 m_eta->Fill(eta);
201 m_phi->Fill(phi);
202 m_time->Fill((*hi_fast)->time(),energy);
203 m_edep->Fill(energy);
204 m_log_edep->Fill( log(energy));
205
206 m_zr->Fill(z,radius);
207 m_etaphi->Fill(eta,phi);
208 m_edep_zr->Fill(z,radius,energy);
209
210 m_edep_eta->Fill(eta,energy);
211 m_edep_phi->Fill(phi,energy);
212
213 m_edep_z->Fill(z,energy);
214 m_edep_r->Fill(radius,energy);
215
216 etot+=energy;
217
218 if((*hi_fast)->energy() > m_edep_cut)
219 {
220 m_eta_cut1->Fill(eta);
221 m_phi_cut1->Fill(phi);
222 m_time_cut1->Fill((*hi_fast)->time(),(*hi_fast)->energy());
223 m_edep_cut1->Fill((*hi_fast)->energy());
224
225 m_zr_cut1->Fill(z,radius);
226 m_etaphi_cut1->Fill(eta,phi);
227 m_edep_zr_cut1->Fill(z,radius,(*hi_fast)->energy());
228 }
229 }
230 }
231 auto primary = getPrimary();
232 if (primary) {
233 m_etot_eta->Fill(primary->momentum().eta(),etot);
234 m_etot_phi->Fill(primary->momentum().phi(),etot);
235 }
236 m_etot->Fill(etot);
237
238 return StatusCode::SUCCESS;
239}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_MSG_DEBUG(x)
LArHitContainer
#define z
boost::transform_iterator< make_const, typename CONT::const_iterator > const_iterator
const CaloDetDescrElement * get_element(const Identifier &cellId) const
get element by its identifier
double energy() const
Definition LArHit.h:113
Identifier cellID() const
Definition LArHit.h:108
HepMC::ConstGenParticlePtr getPrimary()
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition hcg.cxx:114

Member Data Documentation

◆ m_caloMgrKey

SG::ReadCondHandleKey<CaloDetDescrManager> LArHitsTestTool::m_caloMgrKey
private
Initial value:
{ this
, "CaloDetDescrManager"
, "CaloDetDescrManager"
, "SG Key for CaloDetDescrManager in the Condition Store" }

Definition at line 48 of file LArHitsTestTool.h.

48 { this
49 , "CaloDetDescrManager"
50 , "CaloDetDescrManager"
51 , "SG Key for CaloDetDescrManager in the Condition Store" };

◆ m_detname

std::string LArHitsTestTool::m_detname
protected

Definition at line 24 of file LArHitsTestTool.h.

◆ m_edep

TH1 * LArHitsTestTool::m_edep
protected

Definition at line 35 of file LArHitsTestTool.h.

◆ m_edep_cut

double LArHitsTestTool::m_edep_cut
protected

Definition at line 25 of file LArHitsTestTool.h.

◆ m_edep_cut1

TH1 * LArHitsTestTool::m_edep_cut1
protected

Definition at line 39 of file LArHitsTestTool.h.

◆ m_edep_eta

TH1* LArHitsTestTool::m_edep_eta
protected

Definition at line 43 of file LArHitsTestTool.h.

◆ m_edep_phi

TH1 * LArHitsTestTool::m_edep_phi
protected

Definition at line 43 of file LArHitsTestTool.h.

◆ m_edep_r

TH1 * LArHitsTestTool::m_edep_r
protected

Definition at line 44 of file LArHitsTestTool.h.

◆ m_edep_z

TH1* LArHitsTestTool::m_edep_z
protected

Definition at line 44 of file LArHitsTestTool.h.

◆ m_edep_zr

TH2* LArHitsTestTool::m_edep_zr
protected

Definition at line 36 of file LArHitsTestTool.h.

◆ m_edep_zr_cut1

TH2* LArHitsTestTool::m_edep_zr_cut1
protected

Definition at line 40 of file LArHitsTestTool.h.

◆ m_eta

TH1* LArHitsTestTool::m_eta
protected

Definition at line 33 of file LArHitsTestTool.h.

◆ m_eta_cut1

TH1* LArHitsTestTool::m_eta_cut1
protected

Definition at line 37 of file LArHitsTestTool.h.

◆ m_etaphi

TH2 * LArHitsTestTool::m_etaphi
protected

Definition at line 34 of file LArHitsTestTool.h.

◆ m_etaphi_cut1

TH2 * LArHitsTestTool::m_etaphi_cut1
protected

Definition at line 38 of file LArHitsTestTool.h.

◆ m_etot

TH1* LArHitsTestTool::m_etot
protected

Definition at line 42 of file LArHitsTestTool.h.

◆ m_etot_eta

TH1* LArHitsTestTool::m_etot_eta
protected

Definition at line 45 of file LArHitsTestTool.h.

◆ m_etot_phi

TH1 * LArHitsTestTool::m_etot_phi
protected

Definition at line 45 of file LArHitsTestTool.h.

◆ m_histSvc

ServiceHandle<ITHistSvc> SimTestHisto::m_histSvc {"THistSvc", "SimTestHisto"}
protectedinherited

Definition at line 35 of file SimTestHisto.h.

35{"THistSvc", "SimTestHisto"};

◆ m_key

std::string SimTestToolBase::m_key
protectedinherited

The MC truth key.

Definition at line 34 of file SimTestToolBase.h.

◆ m_lar_edep_zr

TH2* LArHitsTestTool::m_lar_edep_zr
protected

Definition at line 30 of file LArHitsTestTool.h.

◆ m_lar_eta

TH1* LArHitsTestTool::m_lar_eta
protected

Definition at line 28 of file LArHitsTestTool.h.

◆ m_lar_etaphi

TH2 * LArHitsTestTool::m_lar_etaphi
protected

Definition at line 29 of file LArHitsTestTool.h.

◆ m_lar_phi

TH1 * LArHitsTestTool::m_lar_phi
protected

Definition at line 28 of file LArHitsTestTool.h.

◆ m_lar_zr

TH2* LArHitsTestTool::m_lar_zr
protected

Definition at line 29 of file LArHitsTestTool.h.

◆ m_log_edep

TH1 * LArHitsTestTool::m_log_edep
protected

Definition at line 35 of file LArHitsTestTool.h.

◆ m_path

std::string SimTestHisto::m_path {"/truth/"}
protectedinherited

Definition at line 34 of file SimTestHisto.h.

34{"/truth/"};

◆ m_phi

TH1 * LArHitsTestTool::m_phi
protected

Definition at line 33 of file LArHitsTestTool.h.

◆ m_phi_cut1

TH1 * LArHitsTestTool::m_phi_cut1
protected

Definition at line 37 of file LArHitsTestTool.h.

◆ m_time

TH1* LArHitsTestTool::m_time
protected

Definition at line 35 of file LArHitsTestTool.h.

◆ m_time_cut1

TH1* LArHitsTestTool::m_time_cut1
protected

Definition at line 39 of file LArHitsTestTool.h.

◆ m_zr

TH2* LArHitsTestTool::m_zr
protected

Definition at line 34 of file LArHitsTestTool.h.

◆ m_zr_cut1

TH2* LArHitsTestTool::m_zr_cut1
protected

Definition at line 38 of file LArHitsTestTool.h.


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