ATLAS Offline Software
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
iFatras::HitCreatorSilicon Class Reference

#include <HitCreatorSilicon.h>

Inheritance diagram for iFatras::HitCreatorSilicon:
Collaboration diagram for iFatras::HitCreatorSilicon:

Public Member Functions

 HitCreatorSilicon (const std::string &, const std::string &, const IInterface *)
 Constructor. More...
 
virtual ~HitCreatorSilicon ()=default
 Destructor. More...
 
StatusCode initialize ()
 AlgTool initailize method. More...
 
StatusCode finalize ()
 AlgTool finalize method. More...
 
void handle (const Incident &inc)
 handle for incident service More...
 
void createSimHit (const ISF::ISFParticle &isp, const Trk::TrackParameters &, double) const
 Return nothing - store the HIT in hit collection. More...
 
void createSimHit (const ISF::ISFParticle &isp, const Trk::TrackParameters &pars, double time, const InDetDD::SiDetectorElement &hitSiDetElement, bool isSiDetElement) const
 templated function Return nothing - store the HIT in hit collection More...
 
const ParametersROTcreateHit (const ISF::ISFParticle &, const Trk::TrackParameters &) const
 Return the cluster on Track – the PrepRawData is contained in this one. More...
 
const std::vector< ParametersROT > * createHits (const ISF::ISFParticle &, const ParametersLayer &) const
 Return the cluster on Track – the PrepRawData is contained in this one. More...
 

Protected Member Functions

double energyDeposit_fast (const ISF::ISFParticle &isp, bool &isPix, bool &isSCT) const
 Calculate Energyloss with simple Landau approximation. More...
 
double energyDeposit_exact (const ISF::ISFParticle &isp, bool &isPix, bool &isSCT) const
 Calculate Energyloss with exact Landau*Gauss. More...
 

Protected Attributes

ServiceHandle< IIncidentSvc > m_incidentSvc {this, "IncidentService", "IncidentSvc"}
 
SiHitCollectionm_hitColl {}
 the SiHit collection More...
 
StringProperty m_collectionName {this, "CollectionName", "PixelHits"}
 name of the collection on storegate More...
 
ServiceHandle< IAtRndmGenSvcm_randomSvc {this, "RandomNumberService", "AtRndmGenSvc"}
 Pointer to the random number generator service. More...
 
StringProperty m_randomEngineName {this, "RandomStreamName", "FatrasRnd"}
 Name of the random number stream. More...
 
CLHEP::HepRandomEngine * m_randomEngine {}
 Random Engine. More...
 
StringProperty m_siIdHelperName {this, "IdHelperName", "PixelID"}
 where to find the Si helper More...
 
const PixelIDm_pixIdHelper {}
 the Pixel ID helper More...
 
const SCT_IDm_sctIdHelper {}
 the SCT ID helper More...
 
ToolHandle< IInDetConditionsToolm_condSummaryTool {this, "ConditionsTool", "PixelConditionsSummaryTool"}
 ToolHandle to ClusterMaker. More...
 
BooleanProperty m_useConditionsTool {this, "UseConditionsTool", true}
 
TF1 * m_dEdX_function {}
 function to evaluate dEdx More...
 
DoubleProperty m_siPathToCharge {this, "PathToChargeConversion", 500.}
 convert path in silicon to charge More...
 
BooleanProperty m_fastEnergyDepositionModel {this, "FastEnergyDepositionModel", true}
 use fast energy deposition model (landau approximation ) More...
 

Detailed Description

RIOOnTrack creation, starting from intersection on an active surface

Author
Andreas.Salzburger -at- cern.ch

Definition at line 50 of file HitCreatorSilicon.h.

Constructor & Destructor Documentation

◆ HitCreatorSilicon()

iFatras::HitCreatorSilicon::HitCreatorSilicon ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Constructor.

Definition at line 47 of file HitCreatorSilicon.cxx.

47  :
48  base_class(t,n,p)
49 {
50 }

◆ ~HitCreatorSilicon()

virtual iFatras::HitCreatorSilicon::~HitCreatorSilicon ( )
virtualdefault

Destructor.

Member Function Documentation

◆ createHit()

const ParametersROT* iFatras::HitCreatorSilicon::createHit ( const ISF::ISFParticle ,
const Trk::TrackParameters  
) const
inline

Return the cluster on Track – the PrepRawData is contained in this one.

Definition at line 76 of file HitCreatorSilicon.h.

76 { return 0; }

◆ createHits()

const std::vector< ParametersROT >* iFatras::HitCreatorSilicon::createHits ( const ISF::ISFParticle ,
const ParametersLayer  
) const
inline

Return the cluster on Track – the PrepRawData is contained in this one.

Definition at line 79 of file HitCreatorSilicon.h.

79 { return 0; }

◆ createSimHit() [1/2]

void iFatras::HitCreatorSilicon::createSimHit ( const ISF::ISFParticle isp,
const Trk::TrackParameters pars,
double  time 
) const

Return nothing - store the HIT in hit collection.

Definition at line 326 of file HitCreatorSilicon.cxx.

326  {
327 
328  // get surface and DetElement base
329  const Trk::Surface &hitSurface = pars.associatedSurface();
330  const Trk::TrkDetElementBase* detElementBase = hitSurface.associatedDetectorElement();
331 
332  // the detector element cast -> needed
333  const InDetDD::SiDetectorElement* SiDetElement = dynamic_cast<const InDetDD::SiDetectorElement*>((detElementBase));
334 
335  // return triggered if no siDetElement or no current particle link to the stack
336  if ( !SiDetElement ){
337  ATH_MSG_WARNING("[ sihit ] No Silicon Detector element available. Ignore this one.");
338  return;
339  }
340 
341  return createSimHit( isp, pars, time, *SiDetElement, 1);
342 
343 }

◆ createSimHit() [2/2]

void iFatras::HitCreatorSilicon::createSimHit ( const ISF::ISFParticle isp,
const Trk::TrackParameters pars,
double  time,
const InDetDD::SiDetectorElement hitSiDetElement,
bool  isSiDetElement 
) const

templated function Return nothing - store the HIT in hit collection

<

Todo:
: fix edge effects

Definition at line 345 of file HitCreatorSilicon.cxx.

345  {
346 
347  // get surface and DetElement base
348  const Trk::Surface &hitSurface = pars.associatedSurface();
349 
350  // get the identifier and hash identifier
351  Identifier hitId = hitSurface.associatedDetectorElementIdentifier();
352  IdentifierHash hitIdHash = hitSiDetElement.identifyHash();
353  // check conditions of the intersection
354  if ( m_useConditionsTool ) {
355  const EventContext& ctx = Gaudi::Hive::currentContext();
356  bool isActive = m_condSummaryTool->isActive(hitIdHash, hitId, ctx); // active = "element returns data"
357  bool isGood = isActive ? m_condSummaryTool->isGood(hitIdHash, hitId, ctx) : false; // good = "data are reliable"
358  if (!isActive)
359  ATH_MSG_VERBOSE("[ sihit ] ID " << hitId << ", hash " << hitIdHash << " is not active. ");
360  else if (!isGood)
361  ATH_MSG_VERBOSE("[ sihit ] ID " << hitId << ", hash " << hitIdHash << " is active but not good. ");
362  else
363  ATH_MSG_VERBOSE("[ sihit ] ID " << hitId << ", hash " << hitIdHash << " is active and good.");
364  if (!isActive || !isGood) return;
365  }
366 
367  // intersection
368  const Amg::Vector2D& intersection = pars.localPosition();
369  double interX = intersection.x();
370  double interY = intersection.y();
371  // thickness of the module
372  const double thickness = hitSiDetElement.thickness();
373  // get the momentum direction into the local frame
374  Amg::Vector3D particleDir = pars.momentum().unit();
375  const Amg::Transform3D& sTransform = hitSurface.transform();
376  Amg::Vector3D localDirection = sTransform.inverse().linear() * particleDir;
377  localDirection *= thickness/cos(localDirection.theta());
378  // moving direction
379  int movingDirection = localDirection.z() > 0. ? 1 : -1;
380  // get he local distance of the intersection in x,y
381  double distX = localDirection.x();
382  double distY = localDirection.y();
383  // local entries in x,y
384  double localEntryX = interX-0.5*distX;
385  double localEntryY = interY-0.5*distY;
386  double localExitX = interX+0.5*distX;
387  double localExitY = interY+0.5*distY;
389  const Amg::Transform3D &hitTransform = hitSiDetElement.transformHit().inverse();
390  // transform into the hit frame
391  Amg::Vector3D localEntry(hitTransform*(sTransform*Amg::Vector3D(localEntryX,localEntryY,-0.5*movingDirection*thickness)));
392  Amg::Vector3D localExit(hitTransform*(sTransform*Amg::Vector3D(localExitX,localExitY,0.5*movingDirection*thickness)));
393 
394  bool isPix = hitSiDetElement.isPixel();
395  bool isSCT = hitSiDetElement.isSCT();
396 
397  // Landau approximation
398  const double dEdX = m_fastEnergyDepositionModel ?
399  energyDeposit_fast(isp,isPix,isSCT)
400  : energyDeposit_exact(isp,isPix,isSCT);
401 
402  const double energyDeposit = dEdX * (localExit - localEntry).mag();
403 
404  // create the silicon hit
405  const HepGeom::Point3D<double> localEntryHep( localEntry.x(), localEntry.y(), localEntry.z() );
406  const HepGeom::Point3D<double> localExitHep( localExit.x(), localExit.y(), localExit.z() );
407 
408  if ( isSiDetElement )
409  ATH_MSG_VERBOSE("[ sihit ] Adding an SiHit SiDetElement to the SiHitCollection.");
410  else
411  ATH_MSG_VERBOSE("[ sihit ] SiHit SiDetElement not found to add to the SiHitCollection.");
412 
413  HepMcParticleLink partLink(HepMC::uniqueID(isp), 0,
416  m_hitColl->Emplace(localEntryHep,
417  localExitHep,
419  time,
420  partLink,
421  m_pixIdHelper ? 0 : 1,
426  m_pixIdHelper ? 0 : m_sctIdHelper->side(hitId));
427 
428 }

◆ energyDeposit_exact()

double iFatras::HitCreatorSilicon::energyDeposit_exact ( const ISF::ISFParticle isp,
bool &  isPix,
bool &  isSCT 
) const
protected

Calculate Energyloss with exact Landau*Gauss.

Definition at line 245 of file HitCreatorSilicon.cxx.

245  {
246  int pdg_id= isp.pdgCode();
247  Amg::Vector3D mom = isp.momentum();
248  double Momentum = sqrt((mom.x()*mom.x()) +( mom.y()*mom.y())+(mom.z()*mom.z()));
249  m_dEdX_function->SetNpx(4);
250  double xmin = 0;
251  double xmax = 0.;
252  if(abs(pdg_id)==11){ // electrons
253  m_dEdX_function->SetParameters(0.009807, 0.3 ,453.7,0.03733);
254  xmax = 1.;
255  }
256  else{ // Kaonen, Protonen, Pionen, Myonen
257 
258  double rest_mass= isp.mass();
259  double para0 = -1.12409e-02;
260  double para1 = 1.42786e-11;
261  double beta = Momentum/ sqrt((Momentum*Momentum)+(rest_mass*rest_mass));
262  double MPV = (para0/pow(beta,2))*(log(para1*(pow(beta,2)/(1-pow(beta,2))))-pow(beta,2));
263  if(Momentum < 1000){ // momentum < 1GeV
264  if(abs(pdg_id)==211){ // Pionen
265  if(isSCT){
266  m_dEdX_function->SetParameters(0.0250, MPV ,453.7,0.0109);
267  }
268  if(isPix){
269  m_dEdX_function->SetParameters(0.0205, MPV ,453.7,0.0219);
270  }
271  }
272  else if(abs(pdg_id)==321){ //Kaonen
273  if(isSCT){
274  m_dEdX_function->SetParameters(0.0458, MPV ,453.7,0.0064);
275  }
276  if(isPix){
277  m_dEdX_function->SetParameters(0.0465, MPV,453.7,0.000);
278  }
279  }
280  else if(abs(pdg_id)==13){ // Muonen
281  if(isSCT){
282  m_dEdX_function->SetParameters(0.0140, MPV,453.7,0.0245);
283  }
284  if(isPix){
285  m_dEdX_function->SetParameters(0.0064, MPV ,453.7,0.0480);
286  }
287  }
288  else if(abs(pdg_id)==2212){ // Protonen
289  if(isSCT){
290  m_dEdX_function->SetParameters(0.0458, MPV ,453.7,0.0064);
291  }
292  if(isPix){
293  m_dEdX_function->SetParameters(0.0465, MPV ,453.7,0.000);
294  }
295  }
296 
297  }
298  else if(Momentum>= 1000){
299  if(isSCT){
300  m_dEdX_function->SetParameters(0.0135, MPV ,453.7,0.0245);
301  }
302  if(isPix){
303  m_dEdX_function->SetParameters(0.0102, MPV ,453.7,0.0297);
304  }
305  }
306  xmax = MPV*10.;
307  } // Parametrisierung fuer Kaonen, Protonen, Pionen, Myonen ENDE
308 
309  double ymin = 0;
310  double ymax = m_dEdX_function -> GetMaximum(xmin, xmax);
311  double energyLoss = 0;
312 
313  for (int count=0; count <1000; count++) {
314  double ry = CLHEP::RandFlat::shoot(m_randomEngine)*(ymax-ymin) + ymin;
315  double rx = CLHEP::RandFlat::shoot(m_randomEngine)*(xmax-xmin) + xmin;
316  double y = m_dEdX_function->Eval(rx);
317  if ( ry <= y ){ energyLoss = rx; break;}
318  }
319 
320 
321 
322  return energyLoss;
323 }

◆ energyDeposit_fast()

double iFatras::HitCreatorSilicon::energyDeposit_fast ( const ISF::ISFParticle isp,
bool &  isPix,
bool &  isSCT 
) const
protected

Calculate Energyloss with simple Landau approximation.

Definition at line 177 of file HitCreatorSilicon.cxx.

177  {
178 
179  int pdg_id= isp.pdgCode();
180  Amg::Vector3D mom = isp.momentum();
181  double Momentum = sqrt((mom.x()*mom.x()) +( mom.y()*mom.y())+(mom.z()*mom.z()));
182  double randLand = CLHEP::RandLandau::shoot(m_randomEngine);
183  double energyLoss=0;
184  if(abs(pdg_id)==11){ // electrons
185  energyLoss = (randLand*0.032)+0.32;
186  }
187  else{ // kaons, protons, pions, myons
188  double rest_mass= isp.mass();
189  double para0 = -1.12409e-02;
190  double para1 = 1.42786e-11;
191  // ST : TEMPORARY remove beta dependence ( fixed to 1 GeV )
192  Momentum = 1000.;
193  // ST
194  double beta = Momentum/ sqrt((Momentum*Momentum)+(rest_mass*rest_mass));
195  double MPV = (para0/pow(beta,2))*(log(para1*(pow(beta,2)/(1-pow(beta,2))))-pow(beta,2));
196 
197  if( Momentum< 1000){ //momentum < 1GeV
198  if(abs(pdg_id)==211){ // Pionen
199  if(isSCT){
200  energyLoss = (randLand*0.023)+(MPV+0.008);
201  }
202  if(isPix){
203  energyLoss = (randLand*0.0225)+(MPV+0.008);
204  }
205  }
206  else if(abs(pdg_id)==321){ //Kaonen
207  if(isSCT){
208  energyLoss = (randLand*0.048)+(MPV+0.01);
209  }
210  if(isPix){
211  energyLoss = (randLand*0.0465)+(MPV+0.01);
212  }
213  }
214  else if(abs(pdg_id)==13){ // Muonen
215  if(isSCT){
216  energyLoss = (randLand*0.025)+(MPV+0.011);
217  }
218  if(isPix){
219  energyLoss = (randLand*0.048)+(MPV+0.011);
220  }
221  }
222  else if(abs(pdg_id)==2212){ // Protonen
223  if(isSCT){
224  energyLoss = (randLand*0.0458)+(MPV+0.008);
225  }
226  if(isPix){
227  energyLoss = (randLand*0.0465)+(MPV+0.008);
228  }
229  }
230 
231  }//end momentum < 1GeV
232  else if(Momentum >= 1000){
233  if(isSCT){
234  energyLoss = (randLand*0.025)+(MPV+0.013);
235  }
236  if(isPix){
237  energyLoss = (randLand*0.025)+(MPV+0.014);
238  }
239  }//end Momentum >= 1GeV
240  } // End kaons, protons, pions, myons
241 
242  return energyLoss;
243 }

◆ finalize()

StatusCode iFatras::HitCreatorSilicon::finalize ( )

AlgTool finalize method.

Definition at line 87 of file HitCreatorSilicon.cxx.

88 {
89  delete m_dEdX_function;
90  return StatusCode::SUCCESS;
91 }

◆ handle()

void iFatras::HitCreatorSilicon::handle ( const Incident &  inc)

handle for incident service

Definition at line 94 of file HitCreatorSilicon.cxx.

94  {
95  // check the incident type
96  if ( inc.type() == IncidentType::BeginEvent ){
97  // check if the hit collection already contains:
98  // (a) if yes ... try to retrieve it
99  if ( evtStore()->contains<SiHitCollection>(m_collectionName) ){
100  if ( (evtStore()->retrieve(m_hitColl , m_collectionName)).isFailure() )
101  ATH_MSG_ERROR( "[ --- ] Unable to retrieve SiHitCollection " << m_collectionName);
102  // (b) if no ... try to create it
103  } else {
105  if ( (evtStore()->record(m_hitColl, m_collectionName, true)).isFailure() ) {
106  ATH_MSG_ERROR( "[ --- ] Unable to record SiHitCollection " << m_collectionName);
107  delete m_hitColl; m_hitColl=0;
108  }
109  }
110  }
111  return;
112 }

◆ initialize()

StatusCode iFatras::HitCreatorSilicon::initialize ( )

AlgTool initailize method.

Definition at line 54 of file HitCreatorSilicon.cxx.

55 {
56  // Random number service
57  ATH_CHECK ( m_randomSvc.retrieve() );
58 
59  //Get own engine with own seeds:
61  if (!m_randomEngine) {
62  ATH_MSG_ERROR( "[ --- ] Could not get random engine '" << m_randomEngineName << "'" );
63  return StatusCode::FAILURE;
64  }
65 
66  ATH_CHECK ( m_condSummaryTool.retrieve( DisableTool{ !m_useConditionsTool } ) );
67 
68  // Get the Pixel Identifier-helper:
69  if ( m_siIdHelperName == "PixelID" ) {
71  }
72  else if ( m_siIdHelperName == "SCT_ID" ) {
74  }
75 
76  // Athena/Gaudi framework
77  ATH_CHECK (m_incidentSvc.retrieve());
78 
79  // register to the incident service: BeginEvent for TrackCollection
80  m_incidentSvc->addListener( this, IncidentType::BeginEvent);
81  m_dEdX_function = new TF1 ("fitfunc2", langaufun_fast, 0.,10.,4);
82  ATH_MSG_VERBOSE( "[ sihit ] initialize() successful." );
83  return StatusCode::SUCCESS;
84 }

Member Data Documentation

◆ m_collectionName

StringProperty iFatras::HitCreatorSilicon::m_collectionName {this, "CollectionName", "PixelHits"}
protected

name of the collection on storegate

Definition at line 88 of file HitCreatorSilicon.h.

◆ m_condSummaryTool

ToolHandle<IInDetConditionsTool> iFatras::HitCreatorSilicon::m_condSummaryTool {this, "ConditionsTool", "PixelConditionsSummaryTool"}
protected

ToolHandle to ClusterMaker.

Handle to Pixel/SCT conditions tool

Definition at line 100 of file HitCreatorSilicon.h.

◆ m_dEdX_function

TF1* iFatras::HitCreatorSilicon::m_dEdX_function {}
protected

function to evaluate dEdx

Definition at line 102 of file HitCreatorSilicon.h.

◆ m_fastEnergyDepositionModel

BooleanProperty iFatras::HitCreatorSilicon::m_fastEnergyDepositionModel {this, "FastEnergyDepositionModel", true}
protected

use fast energy deposition model (landau approximation )

Definition at line 105 of file HitCreatorSilicon.h.

◆ m_hitColl

SiHitCollection* iFatras::HitCreatorSilicon::m_hitColl {}
protected

the SiHit collection

Definition at line 87 of file HitCreatorSilicon.h.

◆ m_incidentSvc

ServiceHandle<IIncidentSvc> iFatras::HitCreatorSilicon::m_incidentSvc {this, "IncidentService", "IncidentSvc"}
protected

Definition at line 84 of file HitCreatorSilicon.h.

◆ m_pixIdHelper

const PixelID* iFatras::HitCreatorSilicon::m_pixIdHelper {}
protected

the Pixel ID helper

Definition at line 96 of file HitCreatorSilicon.h.

◆ m_randomEngine

CLHEP::HepRandomEngine* iFatras::HitCreatorSilicon::m_randomEngine {}
protected

Random Engine.

Definition at line 93 of file HitCreatorSilicon.h.

◆ m_randomEngineName

StringProperty iFatras::HitCreatorSilicon::m_randomEngineName {this, "RandomStreamName", "FatrasRnd"}
protected

Name of the random number stream.

Definition at line 92 of file HitCreatorSilicon.h.

◆ m_randomSvc

ServiceHandle<IAtRndmGenSvc> iFatras::HitCreatorSilicon::m_randomSvc {this, "RandomNumberService", "AtRndmGenSvc"}
protected

Pointer to the random number generator service.

Random Svc

Definition at line 91 of file HitCreatorSilicon.h.

◆ m_sctIdHelper

const SCT_ID* iFatras::HitCreatorSilicon::m_sctIdHelper {}
protected

the SCT ID helper

Definition at line 97 of file HitCreatorSilicon.h.

◆ m_siIdHelperName

StringProperty iFatras::HitCreatorSilicon::m_siIdHelperName {this, "IdHelperName", "PixelID"}
protected

where to find the Si helper

Definition at line 95 of file HitCreatorSilicon.h.

◆ m_siPathToCharge

DoubleProperty iFatras::HitCreatorSilicon::m_siPathToCharge {this, "PathToChargeConversion", 500.}
protected

convert path in silicon to charge

Definition at line 104 of file HitCreatorSilicon.h.

◆ m_useConditionsTool

BooleanProperty iFatras::HitCreatorSilicon::m_useConditionsTool {this, "UseConditionsTool", true}
protected

Definition at line 101 of file HitCreatorSilicon.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
ymin
double ymin
Definition: listroot.cxx:63
Trk::Surface::associatedDetectorElement
const TrkDetElementBase * associatedDetectorElement() const
return associated Detector Element
langaufun_fast
double langaufun_fast(double *x, double *par)
Definition: HitCreatorSilicon.cxx:114
PixelID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: PixelID.h:619
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
Trk::Surface::associatedDetectorElementIdentifier
Identifier associatedDetectorElementIdentifier() const
return Identifier of the associated Detector Element
ISF::ISFParticle::pdgCode
int pdgCode() const
PDG value.
Trk::TrkDetElementBase
Definition: TrkDetElementBase.h:52
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: SCT_ID.h:728
SCT_ID::phi_module
int phi_module(const Identifier &id) const
Definition: SCT_ID.h:740
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
iFatras::HitCreatorSilicon::m_incidentSvc
ServiceHandle< IIncidentSvc > m_incidentSvc
Definition: HitCreatorSilicon.h:84
intersection
std::vector< std::string > intersection(std::vector< std::string > &v1, std::vector< std::string > &v2)
Definition: compareFlatTrees.cxx:25
iFatras::HitCreatorSilicon::m_randomEngine
CLHEP::HepRandomEngine * m_randomEngine
Random Engine.
Definition: HitCreatorSilicon.h:93
iFatras::HitCreatorSilicon::m_randomEngineName
StringProperty m_randomEngineName
Name of the random number stream.
Definition: HitCreatorSilicon.h:92
InDetDD::SolidStateDetectorElementBase::identifyHash
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
iFatras::HitCreatorSilicon::energyDeposit_exact
double energyDeposit_exact(const ISF::ISFParticle &isp, bool &isPix, bool &isSCT) const
Calculate Energyloss with exact Landau*Gauss.
Definition: HitCreatorSilicon.cxx:245
Trk::energyDeposit
@ energyDeposit
Definition: MeasurementType.h:32
AtlasHitsVector::Emplace
void Emplace(Args &&... args)
Definition: AtlasHitsVector.h:81
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xmin
double xmin
Definition: listroot.cxx:60
InDetDD::SolidStateDetectorElementBase::thickness
double thickness() const
beamspotman.n
n
Definition: beamspotman.py:731
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
HepMC::uniqueID
int uniqueID(const T &p)
Definition: MagicNumbers.h:116
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
iFatras::HitCreatorSilicon::m_condSummaryTool
ToolHandle< IInDetConditionsTool > m_condSummaryTool
ToolHandle to ClusterMaker.
Definition: HitCreatorSilicon.h:100
iFatras::HitCreatorSilicon::m_useConditionsTool
BooleanProperty m_useConditionsTool
Definition: HitCreatorSilicon.h:101
InDetDD::SiDetectorElement::isPixel
bool isPixel() const
keylayer_zslicemap.isPix
isPix
Definition: keylayer_zslicemap.py:127
PixelID::layer_disk
int layer_disk(const Identifier &id) const
Definition: PixelID.h:626
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
PixelID::eta_module
int eta_module(const Identifier &id) const
Definition: PixelID.h:651
ISF::ISFParticle::momentum
const Amg::Vector3D & momentum() const
The current momentum vector of the ISFParticle.
iFatras::HitCreatorSilicon::m_fastEnergyDepositionModel
BooleanProperty m_fastEnergyDepositionModel
use fast energy deposition model (landau approximation )
Definition: HitCreatorSilicon.h:105
SCT_ID::layer_disk
int layer_disk(const Identifier &id) const
Definition: SCT_ID.h:734
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
iFatras::HitCreatorSilicon::m_dEdX_function
TF1 * m_dEdX_function
function to evaluate dEdx
Definition: HitCreatorSilicon.h:102
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
iFatras::HitCreatorSilicon::m_randomSvc
ServiceHandle< IAtRndmGenSvc > m_randomSvc
Pointer to the random number generator service.
Definition: HitCreatorSilicon.h:91
iFatras::HitCreatorSilicon::createSimHit
void createSimHit(const ISF::ISFParticle &isp, const Trk::TrackParameters &, double) const
Return nothing - store the HIT in hit collection.
Definition: HitCreatorSilicon.cxx:326
iFatras::HitCreatorSilicon::m_sctIdHelper
const SCT_ID * m_sctIdHelper
the SCT ID helper
Definition: HitCreatorSilicon.h:97
SiHitCollection
AtlasHitsVector< SiHit > SiHitCollection
Definition: SiHitCollection.h:14
y
#define y
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
iFatras::HitCreatorSilicon::energyDeposit_fast
double energyDeposit_fast(const ISF::ISFParticle &isp, bool &isPix, bool &isSCT) const
Calculate Energyloss with simple Landau approximation.
Definition: HitCreatorSilicon.cxx:177
SCT_ID::eta_module
int eta_module(const Identifier &id) const
Definition: SCT_ID.h:746
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
xmax
double xmax
Definition: listroot.cxx:61
iFatras::HitCreatorSilicon::m_collectionName
StringProperty m_collectionName
name of the collection on storegate
Definition: HitCreatorSilicon.h:88
SCT_ID::side
int side(const Identifier &id) const
Definition: SCT_ID.h:752
iFatras::HitCreatorSilicon::m_hitColl
SiHitCollection * m_hitColl
the SiHit collection
Definition: HitCreatorSilicon.h:87
InDetDD::SiDetectorElement::isSCT
bool isSCT() const
iFatras::HitCreatorSilicon::m_pixIdHelper
const PixelID * m_pixIdHelper
the Pixel ID helper
Definition: HitCreatorSilicon.h:96
iFatras::HitCreatorSilicon::m_siIdHelperName
StringProperty m_siIdHelperName
where to find the Si helper
Definition: HitCreatorSilicon.h:95
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
MuonParameters::beta
@ beta
Definition: MuonParamDefs.h:144
PixelID::phi_module
int phi_module(const Identifier &id) const
Definition: PixelID.h:644
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
InDetDD::SolidStateDetectorElementBase::transformHit
const GeoTrf::Transform3D & transformHit() const
Local (simulation/hit frame) to global transform.
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
mag
Scalar mag() const
mag method
Definition: AmgMatrixBasePlugin.h:26
ymax
double ymax
Definition: listroot.cxx:64
ISF::ISFParticle::mass
double mass() const
mass of the particle
Identifier
Definition: IdentifierFieldParser.cxx:14