ATLAS Offline Software
VP1SimHitSystem.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /*
6  * Major updates:
7  * - 2022 Jan, Riccardo Maria Bianchi <riccardo.maria.bianchi@cern.ch>
8  * Added visualization for Calorimeters' sim hits
9  *
10  */
12 #include "ui_simhitcontrollerform.h"
13 
16 
17 #include "StoreGate/StoreGateSvc.h"
18 
22 #include "GeoAdaptors/GeoSiHit.h"
24 
25 // Section of includes for global calo hits
26 #include "CaloDetDescr/CaloDetDescrElement.h"
29 
30 // Section of includes for LAr calo hits
31 #include "LArSimEvent/LArHit.h"
33 
34 // Section of includes for Tile calo hits
36 #include "CaloIdentifier/TileID.h"
37 #include "TileSimEvent/TileHit.h"
39 
45 
47 
49 
50 #include <Inventor/C/errors/debugerror.h>
51 #include <Inventor/nodes/SoDrawStyle.h>
52 #include <Inventor/nodes/SoMaterial.h>
53 #include <Inventor/nodes/SoSeparator.h>
54 #include <Inventor/nodes/SoSwitch.h>
55 #include <Inventor/nodes/SoVertexProperty.h>
56 #include <Inventor/nodes/SoPointSet.h>
57 #include <Inventor/SbColor.h>
58 
59 #include <QMap>
60 #include <QSet>
61 
63 {
64 public:
65  QMap<QString,SoSwitch*> switchMap;
66  QMap<QString,SbColor> colorMap;
67  QMap<QCheckBox*,QString> checkBoxNamesMap;
68  QMap<QString,QCheckBox*> checkBoxMap;
69  QSet<QString> hitsThisEvent;
70  StoreGateSvc * sg = nullptr;
71 
72  // Managers
74  std::unique_ptr<CaloDetDescrManager> lar_dd_man;
75 
76  // ID helpers
77  const TileID* tile_id{nullptr};
78 
79 };
80 
82  :IVP13DSystemSimple("Sim Hits","Display simulation hits from trackers and calorimeters","Vakho Tsulaia <Vakhtang.Tsulaia@cern.ch>, Riccardo Maria Bianchi <Riccardo.Maria.Bianchi@cern.ch>"),
83  m_clockwork(new Clockwork())
84 {
85 }
86 
88 {
89  delete m_clockwork;
90  m_clockwork = 0;
91 }
92 
94 {
95  QWidget* controller = new QWidget(0);
96  Ui::SimHitControllerForm ui;
97  ui.setupUi(controller);
98 
99  // Populate Check Box Names Map
100  m_clockwork->checkBoxNamesMap.insert(ui.chbxPixelHits,"Pixel");
101  m_clockwork->checkBoxNamesMap.insert(ui.chbxSCTHits,"SCT");
102  m_clockwork->checkBoxNamesMap.insert(ui.chbxTRTHits,"TRT");
103  m_clockwork->checkBoxNamesMap.insert(ui.chbxMDTHits,"MDT");
104  m_clockwork->checkBoxNamesMap.insert(ui.chbxRPCHits,"RPC");
105  m_clockwork->checkBoxNamesMap.insert(ui.chbxTGCHits,"TGC");
106  m_clockwork->checkBoxNamesMap.insert(ui.chbxCSCHits,"CSC");
107  m_clockwork->checkBoxNamesMap.insert(ui.chbxMMHits,"MM");
108  m_clockwork->checkBoxNamesMap.insert(ui.chbxsTGCHits,"sTGC");
109  m_clockwork->checkBoxNamesMap.insert(ui.chbxLArEMBHits,"LArEMB");
110  m_clockwork->checkBoxNamesMap.insert(ui.chbxLArEMECHits,"LArEMEC");
111  m_clockwork->checkBoxNamesMap.insert(ui.chbxLArFCALHits,"LArFCAL");
112  m_clockwork->checkBoxNamesMap.insert(ui.chbxLArHECHits,"LArHEC");
113  m_clockwork->checkBoxNamesMap.insert(ui.chbxTileHits,"Tile");
114  m_clockwork->checkBoxNamesMap.insert(ui.chbxGenericMuonHits,"Generic Muon");
115  m_clockwork->checkBoxNamesMap.insert(ui.chbxForwardRegionHits,"Forward Region");
116 
117  // Populate Check Box Map and connect slots
118  for(QCheckBox* cb : m_clockwork->checkBoxNamesMap.keys())
119  {
120  connect(cb,SIGNAL(toggled(bool)),this,SLOT(checkboxChanged()));
122  }
123 
124  return controller;
125 }
126 
128 {
129  // Populate Color Map
130  m_clockwork->colorMap.insert("Pixel",SbColor(0,0,1));
131  m_clockwork->colorMap.insert("SCT",SbColor(1,1,1)); // white
132  m_clockwork->colorMap.insert("TRT",SbColor(1,0,0)); // red
133  m_clockwork->colorMap.insert("MDT",SbColor(.98,.8,.21));
134  m_clockwork->colorMap.insert("RPC",SbColor(0,.44,.28));
135  m_clockwork->colorMap.insert("TGC",SbColor(0,.631244,.748016));
136  m_clockwork->colorMap.insert("CSC",SbColor(.21,.64,1.));
137  m_clockwork->colorMap.insert("MM",SbColor(VP1ColorUtils::getSbColorFromRGB(28, 162, 230))); // Carolina Blue
138  m_clockwork->colorMap.insert("sTGC",SbColor(VP1ColorUtils::getSbColorFromRGB(255, 255, 255))); // White
139  m_clockwork->colorMap.insert("LArEMB",SbColor(VP1ColorUtils::getSbColorFromRGB(247, 187, 109))); // Mellow Apricot
140  m_clockwork->colorMap.insert("LArEMEC",SbColor(VP1ColorUtils::getSbColorFromRGB(230, 151, 48))); // Carrot Orange
141  m_clockwork->colorMap.insert("LArFCAL",SbColor(VP1ColorUtils::getSbColorFromRGB(212, 134, 32))); // Fulvous
142  m_clockwork->colorMap.insert("LArHEC",SbColor(VP1ColorUtils::getSbColorFromRGB(184, 114, 24))); // Copper
143  //m_clockwork->colorMap.insert("Tile",SbColor(VP1ColorUtils::getSbColorFromRGB(28, 162, 230))); // Carolina Blue --> Note: this is nice, but it disappears when superimposed to the azure Tile geometry default material
144  m_clockwork->colorMap.insert("Tile",SbColor(VP1ColorUtils::getSbColorFromRGB(164, 78, 207))); // Purple Plum
145  m_clockwork->colorMap.insert("Generic Muon",SbColor(.21,.64,1.));
146  m_clockwork->colorMap.insert("Forward Region",SbColor(.21,.64,1.));
147 
148 
149  // ------------- DD Managers and ID Helpers -------------
151  if(status.isFailure() || m_clockwork->tile_dd_man==nullptr) {
152  //m_clockwork->noCalo = true;
153  messageDebug("Unable to retrieve Tile DD Manager");
154  return;
155  }
157  if(m_clockwork->tile_id==nullptr) {
158  //m_clockwork->noCalo = true;
159  messageDebug("0 pointer to Tile ID Helper");
160  return;
161  }
162 
164 }
165 
167 {
168  // --- Draw style: POINTS
169  SoDrawStyle* ds = new SoDrawStyle();
170  ds->style.setValue(SoDrawStyle::POINTS);
171  ds->pointSize=4;
172  root->addChild(ds);
173 
174  // Keep SG pointer
175  m_clockwork->sg = sg;
176 
177  // clean up
178  m_clockwork->switchMap.clear();
179  m_clockwork->hitsThisEvent.clear();
180 
181  if(!sg)
182  {
183  message("0 pointer to the Store Gate!");
184  return;
185  }
186 
187  for(QString detector : m_clockwork->checkBoxMap.keys())
188  {
189  // Add switch, off by default
190  SoSwitch* sw = new SoSwitch();
191  sw->whichChild = SO_SWITCH_NONE;
192  root->addChild(sw);
193  m_clockwork->switchMap.insert(detector,sw);
194 
195  // Build subtree if the check box is ON
196  if(m_clockwork->checkBoxMap.contains(detector) &&
197  m_clockwork->checkBoxMap[detector]->isChecked())
198  {
200  sw->whichChild = SO_SWITCH_ALL;
201  }
202  updateGUI();
203  }
204 }
205 
207 {
208  // Get ChB pointer
209  QCheckBox* cb = dynamic_cast<QCheckBox*>(sender());
210  if(cb && m_clockwork->checkBoxNamesMap.contains(cb))
211  {
212  // Get detector name
213  QString detector = m_clockwork->checkBoxNamesMap[cb];
214  if(m_clockwork->switchMap.contains(detector))
215  {
216  // Get swtich
217  SoSwitch* sw = m_clockwork->switchMap[detector];
218  if(cb->isChecked()){
219  // Build subtree if necessary
220  if(!m_clockwork->hitsThisEvent.contains(detector))
222  sw->whichChild = SO_SWITCH_ALL;
223  }
224  else
225  sw->whichChild = SO_SWITCH_NONE;
226  } else {
227  message("WARNING: Unknown detector:"+detector);
228  }
229  }
230 }
231 
232 
234 {
235  messageVerbose("buildHitTree for "+detector);
236  if(m_clockwork->hitsThisEvent.contains(detector)) {
237  messageVerbose(" in hitsThisEvent"); return;
238  }
239  if(!m_clockwork->colorMap.contains(detector)) {
240  messageVerbose("not in colorMap"); return;
241  }
242  if(!m_clockwork->switchMap.contains(detector)) {
243  messageVerbose("not in switchMap"); return;
244  }
245 
246  // -- Initializations
247  StoreGateSvc* sg = m_clockwork->sg;
248  SoSwitch* sw = m_clockwork->switchMap[detector];
249  unsigned int hitCount = 0;
250 
251  SoVertexProperty* hitVtxProperty = new SoVertexProperty();
252  SoPointSet* hitPointSet = new SoPointSet();
253 
254  hitVtxProperty->enableNotify(FALSE);
255  hitPointSet->enableNotify(FALSE);
256 
257  // -- COLOR
258  SoMaterial* material = new SoMaterial();
259  material->diffuseColor.setValue(m_clockwork->colorMap[detector]);
260 
261  sw->addChild(material);
262 
263  // Take hits from SG
264  if(detector=="Pixel")
265  {
266  //
267  // Pixel:
268  //
269  const SiHitCollection* p_collection = nullptr;
270  if(sg->retrieve(p_collection,"PixelHits")==StatusCode::SUCCESS)
271  {
272  for (const SiHit& hit : *p_collection)
273  {
274  GeoSiHit ghit(hit);
275  if(!ghit) continue;
276  HepGeom::Point3D<double> u = ghit.getGlobalPosition();
277  hitVtxProperty->vertex.set1Value(hitCount++,u.x(),u.y(),u.z());
278  }
279  }
280  else
281  message("Unable to retrieve Pixel Hits");
282  }
283  else if(detector=="SCT")
284  {
285  //
286  // SCT:
287  //
288  const SiHitCollection* s_collection = 0;
289  if(sg->retrieve(s_collection,"SCT_Hits")==StatusCode::SUCCESS)
290  {
291  for (const SiHit& hit : *s_collection)
292  {
293  GeoSiHit ghit(hit);
294  if (!ghit) continue;
295  HepGeom::Point3D<double> u = ghit.getGlobalPosition();
296  hitVtxProperty->vertex.set1Value(hitCount++,u.x(),u.y(),u.z());
297  }
298  }
299  else
300  message("Unable to retrieve SCT Hits");
301  }
302  else if(detector=="TRT")
303  {
304  //
305  // TRT:
306  //
307  const TRTUncompressedHitCollection* t_collection = nullptr;
308  if(sg->retrieve(t_collection,"TRTUncompressedHits")==StatusCode::SUCCESS)
309  {
310  for (const TRTUncompressedHit& hit : *t_collection)
311  {
312  GeoTRTUncompressedHit ghit(hit);
313  if(!ghit) continue;
315  hitVtxProperty->vertex.set1Value(hitCount++,u.x(),u.y(), u.z() );
316  }
317  }
318  else
319  message("Unable to retrieve TRT Hits");
320  }
321  else if(detector=="LArEMB" || detector=="LArEMEC" || detector=="LArFCAL" || detector=="LArHEC" )
322  {
323  //
324  // LAr:
325  //
326  // NOTE: to access additional LAr simHit data, see:
327  // Simulation/Tools/HitAnalysis/src/CaloHitAnalysis.cxx
328  //
329  const LArHitContainer* lar_collection;
330 
331  std::string collName{"LArHit"};
332  std::string suff{""};
333 
334  if (detector=="LArEMB")
335  suff = "EMB";
336  else if (detector=="LArEMEC")
337  suff = "EMEC";
338  else if (detector=="LArFCAL")
339  suff = "FCAL";
340  else if (detector=="LArHEC")
341  suff = "HEC";
342  collName += suff; // e.g., we get 'LArHitEMB'
343 
344  if(sg->retrieve(lar_collection, collName)==StatusCode::SUCCESS)
345  {
346  for (auto hi : *lar_collection ) {
347 
348  const LArHit* larHit = hi;
349  const CaloDetDescrElement* ddElement = m_clockwork->lar_dd_man->get_element(larHit->cellID());
350  if (ddElement)
351  handleDetDescrElementHit(ddElement, hitVtxProperty, hitCount);
352  else
353  message("Unable to retrieve the CaloDetDescrElement!");
354  }
355  }
356  else
357  message("Unable to retrieve " + QString::fromStdString(collName) );
358  }
359  else if(detector=="Tile")
360  {
361  //
362  // Tile:
363  //
364  // For more Tile simHits data, see:
365  // Simulation/Tools/HitAnalysis/src/CaloHitAnalysis.cxx
366  //
367  const TileHitVector* t_collection = nullptr;
368 
369  if(sg->retrieve(t_collection,"TileHitVec")==StatusCode::SUCCESS)
370  {
371  for (const TileHit& hit : *t_collection) {
372  Identifier pmt_id = hit.identify();
373  Identifier cell_id = m_clockwork->tile_id->cell_id(pmt_id);
374  const CaloDetDescrElement* ddElement = (m_clockwork->tile_id->is_tile_aux(cell_id)) ? 0 : m_clockwork->tile_dd_man->get_cell_element(cell_id);
375  if (ddElement)
376  handleDetDescrElementHit(ddElement, hitVtxProperty, hitCount);
377  else
378  message("Unable to retrieve the CaloDetDescrElement!");
379  }
380  }
381  else
382  message("Unable to retrieve Tile Hits");
383  }
384  else if(detector=="MDT")
385  {
386  //
387  // MDT:
388  //
389  const MDTSimHitCollection* mdt_collection = nullptr;
390  if(sg->retrieve(mdt_collection)==StatusCode::SUCCESS)
391  {
392  for (const MDTSimHit& hit : *mdt_collection)
393  {
394  GeoMDTHit ghit(hit);
395  if(!ghit) continue;
397  hitVtxProperty->vertex.set1Value(hitCount++,u.x(),u.y(),u.z());
398  }
399  }
400  else
401  message("Unable to retrieve MDT Hits");
402  }
403  else if(detector=="RPC")
404  {
405  //
406  // RPC:
407  //
408  const RPCSimHitCollection* rpc_collection = nullptr;
409  if(sg->retrieve(rpc_collection)==StatusCode::SUCCESS) {
410  for (const RPCSimHit& hit : *rpc_collection)
411  {
412  GeoRPCHit ghit(hit);
413  if(!ghit) continue;
415  hitVtxProperty->vertex.set1Value(hitCount++,u.x(),u.y(),u.z());
416  }
417  }
418  else
419  message("Unable to retrieve RPC Hits");
420  }
421  else if(detector=="TGC")
422  {
423  //
424  // TGC:
425  //
426  const TGCSimHitCollection* tgc_collection = nullptr;
427  if (sg->retrieve(tgc_collection)==StatusCode::SUCCESS)
428  {
429  for (const TGCSimHit& hit : *tgc_collection)
430  {
431  GeoTGCHit ghit(hit);
432  if(!ghit) continue;
434  hitVtxProperty->vertex.set1Value(hitCount++,u.x(),u.y(),u.z());
435  }
436  }
437  else
438  message("Unable to retrieve TGC Hits");
439  }
440  else if(detector=="CSC")
441  {
442  //
443  // CSC:
444  //
445  const CSCSimHitCollection* csc_collection = nullptr;
446  if(sg->retrieve(csc_collection)==StatusCode::SUCCESS)
447  {
448  for (const CSCSimHit& hit : *csc_collection)
449  {
450  GeoCSCHit ghit(hit);
451  if (!ghit) continue;
453  hitVtxProperty->vertex.set1Value(hitCount++,u.x(),u.y(),u.z());
454  }
455  }
456  else
457  message("Unable to retrieve CSC Hits");
458  }
459  else if(detector=="MM")
460  {
461  //
462  // NSW / MM:
463  //
464  const MMSimHitCollection* mm_collection;
465  if(sg->retrieve(mm_collection)==StatusCode::SUCCESS)
466  {
467  for( const MMSimHit& hit : *mm_collection )
468  {
469  GeoMMHit ghit(hit);
470  if(!ghit) continue;
472  hitVtxProperty->vertex.set1Value(hitCount++,u.x(),u.y(),u.z());
473  }
474  }
475  else
476  message("Unable to retrieve MM Hits");
477  }
478  else if(detector=="sTGC")
479  {
480  //
481  // NSW / sTGC:
482  //
483  const sTGCSimHitCollection* stgc_collection;
484  if(sg->retrieve(stgc_collection)==StatusCode::SUCCESS)
485  {
486  for( const sTGCSimHit& hit : *stgc_collection )
487  {
488  GeosTGCHit ghit(hit);
489  if(!ghit) continue;
491  hitVtxProperty->vertex.set1Value(hitCount++,u.x(),u.y(),u.z());
492  }
493  }
494  else
495  message("Unable to retrieve sTGC Hits");
496  }
497  else if(detector=="Generic Muon")
498  {
499  //
500  // Generic:
501  //
502  message("Trying for Generic Muon (as many collections as can be found)");
503  for(QString key : VP1SGContentsHelper(this).getKeys<GenericMuonSimHitCollection>()) {
504  const GenericMuonSimHitCollection* generic_collection = nullptr;
505  if(sg->retrieve( generic_collection,key.toStdString().c_str() )==StatusCode::SUCCESS)
506  {
507  messageVerbose("Retrieved"+key+"with size: "+str(generic_collection->size()));
508  std::cout<<"Got collection with size: "<<generic_collection->size()<<std::endl;
509 
510  //unsigned int i=0; // for DEBUG only
511  for (const GenericMuonSimHit& hit : *generic_collection)
512  {
513  // std::cout << "Got hit number: " << i++ << std::endl; // for DEBUG only
514  const GenericMuonSimHit ghit(hit);
515  const Amg::Vector3D& u = ghit.globalPosition();
516  hitVtxProperty->vertex.set1Value(hitCount++,u.x(),u.y(),u.z());
517  }
518  }
519  else
520  message("Unable to retrieve Generic Muon Hits from "+key);
521  }
522  } else if(detector=="Forward Region")
523  {
524  //
525  // Generic:
526  //
527  message("Trying for ForwardRegion (as many collections as can be found)");
528  for(QString key : VP1SGContentsHelper(this).getKeys<SimulationHitCollection>()) {
529  const SimulationHitCollection* generic_collection = nullptr;
530  if(sg->retrieve( generic_collection,key.toStdString().c_str() )==StatusCode::SUCCESS)
531  {
532  messageVerbose("Retrieved"+key+"with size: "+str(generic_collection->size()));
533  std::cout<<"Got collection with size: "<<generic_collection->size()<<std::endl;
534 
535  //unsigned int i=0; // for DEBUG only
536  for (const SimulationHit& hit : *generic_collection)
537  {
538  // std::cout << "Got hit number: " << i++ << std::endl; // for DEBUG only
539  const SimulationHit ghit(hit);
541  hitVtxProperty->vertex.set1Value(hitCount++,u.x(),u.y(),u.z());
542  }
543  }
544  else
545  message("Unable to retrieve Simulation Hits from "+key);
546  }
547  }
548 
549  // Add to the switch
550  hitPointSet->numPoints=hitCount;
551  hitPointSet->vertexProperty.setValue(hitVtxProperty);
552  sw->addChild(hitPointSet);
553  hitPointSet->enableNotify(TRUE);
554  hitVtxProperty->enableNotify(TRUE);
555 }
556 
557 
558 void VP1SimHitSystem::handleDetDescrElementHit(const CaloDetDescrElement *hitElement, SoVertexProperty* hitVtxProperty, unsigned int &hitCount)
559 {
560  float x = hitElement->x();
561  float y = hitElement->y();
562  double z = hitElement->z();
563  hitVtxProperty->vertex.set1Value(hitCount++,x,y,z);
564 }
565 
Tile_Base_ID::is_tile_aux
bool is_tile_aux(const Identifier &id) const
Definition: Tile_Base_ID.cxx:232
MMSimHit
Definition: MMSimHit.h:15
checkxAOD.ds
ds
Definition: Tools/PyUtils/bin/checkxAOD.py:257
VP1SimHitSystem::buildHitTree
void buildHitTree(const QString &detector)
Definition: VP1SimHitSystem.cxx:233
GeoTGCHit::getGlobalPosition
Amg::Vector3D getGlobalPosition() const
GeoCSCHit
Definition: GeoMuonHits.h:129
VP1SimHitSystem::buildEventSceneGraph
void buildEventSceneGraph(StoreGateSvc *sg, SoSeparator *root)
Definition: VP1SimHitSystem.cxx:166
IVP13DSystemSimple
Definition: IVP13DSystemSimple.h:24
GenericMuonSimHit::globalPosition
const Amg::Vector3D & globalPosition() const
Definition: GenericMuonSimHit.h:55
CaloDetDescrElement::y
float y() const
cell y
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:365
VP1SimHitSystem::Clockwork::tile_dd_man
const TileDetDescrManager * tile_dd_man
Definition: VP1SimHitSystem.cxx:73
GeoMDTHit
Definition: GeoMuonHits.h:64
MDTSimHit
Definition: MDTSimHit.h:21
CSCSimHitCollection.h
GeoRPCHit::getGlobalPosition
Amg::Vector3D getGlobalPosition() const
GeosTGCHit
Definition: GeoMuonHits.h:179
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
fillPileUpNoiseLumi.connect
string connect
Definition: fillPileUpNoiseLumi.py:70
VP1SimHitSystem::Clockwork::switchMap
QMap< QString, SoSwitch * > switchMap
Definition: VP1SimHitSystem.cxx:65
CSV_InDetExporter.new
new
Definition: CSV_InDetExporter.py:145
AtlasHitsVector
Definition: AtlasHitsVector.h:33
VP1SimHitSystem::Clockwork::hitsThisEvent
QSet< QString > hitsThisEvent
Definition: VP1SimHitSystem.cxx:69
GeoMMHit::getGlobalPosition
Amg::Vector3D getGlobalPosition() const
TRTUncompressedHit
Definition: TRTUncompressedHit.h:11
VP1SimHitSystem::VP1SimHitSystem
VP1SimHitSystem()
Definition: VP1SimHitSystem.cxx:81
GeoMuonHits.h
VP1SimHitSystem::systemcreate
void systemcreate(StoreGateSvc *detstore)
Definition: VP1SimHitSystem.cxx:127
LArHitContainer
Hit collection.
Definition: LArHitContainer.h:26
GeoTRTUncompressedHit.h
sendEI_SPB.root
root
Definition: sendEI_SPB.py:34
x
#define x
VP1String::str
static QString str(const QString &s)
Definition: VP1String.h:49
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
CaloDetDescrManager.h
Definition of CaloDetDescrManager.
TileID.h
TileDetDescrManager.h
VP1SimHitSystem::Clockwork::tile_id
const TileID * tile_id
Definition: VP1SimHitSystem.cxx:77
SimulationHit
Definition: SimulationHit.h:11
VP1SimHitSystem::Clockwork::sg
StoreGateSvc * sg
Definition: VP1SimHitSystem.cxx:70
Amg::Hep3VectorToEigen
Amg::Vector3D Hep3VectorToEigen(const CLHEP::Hep3Vector &CLHEPvector)
Converts a CLHEP-based CLHEP::Hep3Vector into an Eigen-based Amg::Vector3D.
Definition: CLHEPtoEigenConverter.h:137
SimulationHit::pre
const StepPoint & pre() const
Definition: SimulationHit.h:30
GeoSiHit
Definition: GeoSiHit.h:30
SiHit
Definition: SiHit.h:19
TRT::Hit::detector
@ detector
Definition: HitInfo.h:78
StoreGateSvc::retrieve
StatusCode retrieve(const T *&ptr) const
Retrieve the default object into a const T*.
GeosTGCHit::getGlobalPosition
Amg::Vector3D getGlobalPosition() const
GenericMuonSimHitCollection.h
GeoPrimitives.h
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
CSCSimHit
Definition: CSCSimHit.h:18
GeoSiHit.h
z
#define z
GeoTGCHit
Definition: GeoMuonHits.h:106
VP1SimHitSystem::m_clockwork
Clockwork * m_clockwork
Definition: VP1SimHitSystem.h:31
TileDetDescrManager
Definition: TileDetDescrManager.h:33
VP1SimHitSystem::handleDetDescrElementHit
void handleDetDescrElementHit(const CaloDetDescrElement *hitElement, SoVertexProperty *hitVtxProperty, unsigned int &hitCount)
Definition: VP1SimHitSystem.cxx:558
TileID
Helper class for TileCal offline identifiers.
Definition: TileID.h:68
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
VP1SimHitSystem.h
VP1SimHitSystem::Clockwork::colorMap
QMap< QString, SbColor > colorMap
Definition: VP1SimHitSystem.cxx:66
IVP1System::serviceLocator
ISvcLocator * serviceLocator() const
Definition: IVP1System.cxx:324
python.Constants.TRUE
bool TRUE
for job options legacy (TODO: get rid of these!) ----------------------—
Definition: Control/AthenaCommon/python/Constants.py:22
SimulationHit::StepPoint::position
CLHEP::Hep3Vector position
Definition: SimulationHit.h:24
RPCSimHitCollection.h
VP1SimHitSystem::Clockwork::lar_dd_man
std::unique_ptr< CaloDetDescrManager > lar_dd_man
Definition: VP1SimHitSystem.cxx:74
VP1SimHitSystem::Clockwork::checkBoxMap
QMap< QString, QCheckBox * > checkBoxMap
Definition: VP1SimHitSystem.cxx:68
TileDetDescrManager::get_cell_element
CaloDetDescrElement * get_cell_element(unsigned int cell_hash) const
Definition: TileDetDescrManager.h:156
LArHit::cellID
Identifier cellID() const
Definition: LArHit.h:108
MDTSimHitCollection.h
TileHitVector.h
TileHit.h
IVP1System::messageDebug
void messageDebug(const QString &) const
Definition: IVP1System.cxx:347
CaloDetDescrBuilder.h
VP1SimHitSystem::~VP1SimHitSystem
~VP1SimHitSystem()
Definition: VP1SimHitSystem.cxx:87
TileHit
Definition: TileSimEvent/TileSimEvent/TileHit.h:30
LArHit
Class to store hit energy and time in LAr cell from G4 simulation.
Definition: LArHit.h:25
GeoCSCHit::getGlobalPosition
Amg::Vector3D getGlobalPosition() const
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
VP1SGContentsHelper
Definition: VP1SGContentsHelper.h:26
TGCSimHit
Definition: TGCSimHit.h:19
TGCSimHitCollection.h
sTGCSimHit
Definition: sTGCSimHit.h:15
python.Constants.FALSE
bool FALSE
Definition: Control/AthenaCommon/python/Constants.py:23
CaloDetDescrElement::x
float x() const
cell x
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:363
VP1ColorUtils::getSbColorFromRGB
static SbColor getSbColorFromRGB(const unsigned int r, const unsigned int g, const unsigned int b)
Definition: VP1ColorUtils.cxx:46
LArHit.h
SimulationHitCollection.h
IVP13DSystemSimple::updateGUI
void updateGUI()
Definition: IVP13DSystemSimple.h:89
TRTUncompressedHitCollection.h
y
#define y
VP1ColorUtils.h
LArHitContainer.h
CaloDetDescrElement::z
float z() const
cell z
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:367
GeoTRTUncompressedHit
Definition: GeoTRTUncompressedHit.h:25
VP1SimHitSystem::buildController
QWidget * buildController()
Definition: VP1SimHitSystem.cxx:93
GeoSiHit::getGlobalPosition
HepGeom::Point3D< double > getGlobalPosition() const
VP1SimHitSystem::checkboxChanged
void checkboxChanged()
Definition: VP1SimHitSystem.cxx:206
AtlasHitsVector::size
size_type size() const
Definition: AtlasHitsVector.h:143
RPCSimHit
Definition: RPCSimHit.h:19
merge.status
status
Definition: merge.py:17
GeoMDTHit::getGlobalPosition
Amg::Vector3D getGlobalPosition() const
GeoRPCHit
Definition: GeoMuonHits.h:85
Tile_Base_ID::cell_id
Identifier cell_id(const Identifier &any_id) const
Definition: Tile_Base_ID.cxx:581
VP1SimHitSystem::Clockwork
Definition: VP1SimHitSystem.cxx:63
StoreGateSvc.h
GenericMuonSimHit
Definition: GenericMuonSimHit.h:15
GeoTRTUncompressedHit::getGlobalPosition
HepGeom::Point3D< double > getGlobalPosition() const
buildCaloDetDescrNoAlign
std::unique_ptr< CaloDetDescrManager > buildCaloDetDescrNoAlign(ISvcLocator *svcLocator, IMessageSvc *msgSvc)
Definition: CaloDetDescrBuilder.cxx:791
IVP1System::message
void message(const QString &) const
Definition: IVP1System.cxx:336
IVP1System::messageVerbose
void messageVerbose(const QString &) const
Definition: IVP1System.cxx:354
GeoMMHit
Definition: GeoMuonHits.h:150
VP1SimHitSystem::Clockwork::checkBoxNamesMap
QMap< QCheckBox *, QString > checkBoxNamesMap
Definition: VP1SimHitSystem.cxx:67
VP1SGContentsHelper.h
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
TileDetDescrManager::get_id
const TileID * get_id() const
Definition: TileDetDescrManager.h:172
SiHitCollection.h