CMS 3D CMS Logo

TotemSD.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Forward
4 // Class : TotemSD
5 //
6 // Implementation:
7 // <Notes on implementation>
8 //
9 // Original Author:
10 // Created: Tue May 16 10:14:34 CEST 2006
11 //
12 
13 // system include files
14 
15 // user include files
19 
23 
26 
32 
35 
36 #include "G4SDManager.hh"
37 #include "G4Step.hh"
38 #include "G4Track.hh"
39 #include "G4VProcess.hh"
40 
41 #include "G4PhysicalConstants.hh"
42 #include "G4SystemOfUnits.hh"
43 
44 //
45 // constructors and destructor
46 //
48  const edm::EventSetup& es,
49  const SensitiveDetectorCatalog& clg,
50  edm::ParameterSet const& p,
51  const SimTrackManager* manager)
52  : SensitiveTkDetector(name, es, clg, p),
53  numberingScheme(nullptr),
54  hcID(-1),
55  theHC(nullptr),
56  theManager(manager),
57  currentHit(nullptr),
58  theTrack(nullptr),
59  currentPV(nullptr),
60  unitID(0),
61  previousUnitID(0),
62  preStepPoint(nullptr),
63  postStepPoint(nullptr) {
64  //Parameters
65  edm::ParameterSet m_p = p.getParameter<edm::ParameterSet>("TotemSD");
66  int verbn = m_p.getUntrackedParameter<int>("Verbosity");
67 
68  SetVerboseLevel(verbn);
69 
70  slave = new TrackingSlaveSD(name);
71 
72  if (name == "TotemHitsT1") {
73  numberingScheme = dynamic_cast<TotemVDetectorOrganization*>(new TotemT1NumberingScheme(1));
74  } else if (name == "TotemHitsT2Si") {
75  numberingScheme = dynamic_cast<TotemVDetectorOrganization*>(new TotemT2NumberingSchemeGem(3));
76  } else if (name == "TotemHitsT2Gem") {
77  numberingScheme = dynamic_cast<TotemVDetectorOrganization*>(new TotemT2NumberingSchemeGem(4));
78  } else if (name == "TotemHitsRP") {
79  numberingScheme = dynamic_cast<TotemVDetectorOrganization*>(new TotemRPNumberingScheme(3));
80  } else {
81  edm::LogWarning("ForwardSim") << "TotemSD: ReadoutName not supported\n";
82  }
83 }
84 
86  delete slave;
87  delete numberingScheme;
88 }
89 
90 bool TotemSD::ProcessHits(G4Step* aStep, G4TouchableHistory*) {
91  getStepInfo(aStep);
92  if (!hitExists() && edeposit > 0.) {
93  createNewHit();
94  return true;
95  }
96  if (!hitExists() && (((unitID == 1111 || unitID == 2222) && ParentId == 0 && ParticleType == 2212))) {
98  }
99  return true;
100 }
101 
102 uint32_t TotemSD::setDetUnitId(const G4Step* aStep) {
103  return (numberingScheme == nullptr ? 0 : numberingScheme->getUnitID(aStep));
104 }
105 
106 void TotemSD::Initialize(G4HCofThisEvent* HCE) {
107  LogDebug("ForwardSim") << "TotemSD : Initialize called for " << GetName();
108 
109  theHC = new TotemG4HitCollection(GetName(), collectionName[0]);
110  if (hcID < 0)
111  hcID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]);
112  HCE->AddHitsCollection(hcID, theHC);
113 
114  tsID = -2;
115  primID = -2;
116 }
117 
118 void TotemSD::EndOfEvent(G4HCofThisEvent*) {
119  // here we loop over transient hits and make them persistent
120  int thehc_entries = theHC->entries();
121  for (int j = 0; j < thehc_entries && j < 15000; j++) {
122  TotemG4Hit* aHit = (*theHC)[j];
123 #ifdef ddebug
124  LogDebug("ForwardSim") << "HIT NUMERO " << j << "unit ID = " << aHit->getUnitID() << "\n"
125  << " "
126  << "enrty z " << aHit->getEntry().z() << "\n"
127  << " "
128  << "theta " << aHit->getThetaAtEntry() << "\n";
129 #endif
130  Local3DPoint theExitPoint(0, 0, 0);
131  Local3DPoint Entrata(aHit->getEntry().x(), aHit->getEntry().y(), aHit->getEntry().z());
132  slave->processHits(PSimHit(Entrata,
133  theExitPoint,
134  aHit->getPabs(),
135  aHit->getTof(),
136  aHit->getEnergyLoss(),
137  aHit->getParticleType(),
138  aHit->getUnitID(),
139  aHit->getTrackID(),
140  aHit->getThetaAtEntry(),
141  aHit->getPhiAtEntry()));
142  }
143 }
144 
146  LogDebug("ForwardSim") << "TotemSD: Collection " << theHC->GetName();
147  theHC->PrintAllHits();
148 }
149 
151  if (slave->name() == hname) {
152  cc = slave->hits();
153  }
154 }
155 
157  LogDebug("ForwardSim") << " Dispatched BeginOfEvent for " << GetName() << " !";
158  clearHits();
159 }
160 
162 
163 G4ThreeVector TotemSD::setToLocal(const G4ThreeVector& global) {
164  G4ThreeVector localPoint;
165  const G4VTouchable* touch = preStepPoint->GetTouchable();
166  localPoint = touch->GetHistory()->GetTopTransform().TransformPoint(global);
167  return localPoint;
168 }
169 
170 void TotemSD::getStepInfo(const G4Step* aStep) {
171  preStepPoint = aStep->GetPreStepPoint();
172  postStepPoint = aStep->GetPostStepPoint();
173  theTrack = aStep->GetTrack();
174  hitPoint = preStepPoint->GetPosition();
175  currentPV = preStepPoint->GetPhysicalVolume();
176 
177  // double weight = 1;
178  G4String name = currentPV->GetName();
179  name.assign(name, 0, 4);
180  G4String particleType = theTrack->GetDefinition()->GetParticleName();
181  edeposit = aStep->GetTotalEnergyDeposit();
182 
183  tSlice = (postStepPoint->GetGlobalTime()) / nanosecond;
184  tSliceID = (int)tSlice;
185  unitID = setDetUnitId(aStep);
186 #ifdef debug
187  LogDebug("ForwardSim") << "UNITa " << unitID;
188 #endif
189  primaryID = theTrack->GetTrackID();
190 
191  Posizio = hitPoint;
192  Pabs = aStep->GetPreStepPoint()->GetMomentum().mag() / GeV;
193  Tof = aStep->GetPostStepPoint()->GetGlobalTime() / nanosecond;
194 
195  Eloss = aStep->GetTotalEnergyDeposit() / GeV;
196  ParticleType = theTrack->GetDefinition()->GetPDGEncoding();
197 
198  ThetaAtEntry = aStep->GetPreStepPoint()->GetPosition().theta() / deg;
199  PhiAtEntry = aStep->GetPreStepPoint()->GetPosition().phi() / deg;
200 
201  ParentId = theTrack->GetParentID();
202  Vx = theTrack->GetVertexPosition().x();
203  Vy = theTrack->GetVertexPosition().y();
204  Vz = theTrack->GetVertexPosition().z();
205 }
206 
208  if (primaryID < 1) {
209  edm::LogWarning("ForwardSim") << "***** TotemSD error: primaryID = " << primaryID << " maybe detector name changed";
210  }
211 
212  // Update if in the same detector, time-slice and for same track
213  // if (primaryID == primID && tSliceID == tsID && unitID==previousUnitID) {
214  if (tSliceID == tsID && unitID == previousUnitID) {
215  updateHit();
216  return true;
217  }
218 
219  // Reset entry point for new primary
220  if (primaryID != primID)
222 
223  //look in the HitContainer whether a hit with the same primID, unitID,
224  //tSliceID already exists:
225 
226  bool found = false;
227  int thehc_entries = theHC->entries();
228  for (int j = 0; j < thehc_entries && !found; j++) {
229  TotemG4Hit* aPreviousHit = (*theHC)[j];
230  if (aPreviousHit->getTrackID() == primaryID && aPreviousHit->getTimeSliceID() == tSliceID &&
231  aPreviousHit->getUnitID() == unitID) {
232  currentHit = aPreviousHit;
233  found = true;
234  break;
235  }
236  }
237 
238  if (found) {
239  updateHit();
240  return true;
241  } else {
242  return false;
243  }
244 }
245 
247 #ifdef debug
248  LogDebug("ForwardSim") << "TotemSD CreateNewHit for"
249  << " PV " << currentPV->GetName() << " PVid = " << currentPV->GetCopyNo()
250  << " MVid = " << currentPV->GetMother()->GetCopyNo() << " Unit " << unitID << "\n"
251  << " primary " << primaryID << " time slice " << tSliceID << " For Track "
252  << theTrack->GetTrackID() << " which is a " << theTrack->GetDefinition()->GetParticleName();
253 
254  if (theTrack->GetTrackID() == 1) {
255  LogDebug("ForwardSim") << " of energy " << theTrack->GetTotalEnergy();
256  } else {
257  LogDebug("ForwardSim") << " daughter of part. " << theTrack->GetParentID();
258  }
259 
260  if (theTrack->GetCreatorProcess() != nullptr)
261  LogDebug("ForwardSim") << theTrack->GetCreatorProcess()->GetProcessName();
262  else
263  LogDebug("ForwardSim") << "NO process";
264 #endif
265 
266  currentHit = new TotemG4Hit;
271 
278 
279  currentHit->setEntry(Posizio.x(), Posizio.y(), Posizio.z());
280 
282  currentHit->setVx(Vx);
283  currentHit->setVy(Vy);
284  currentHit->setVz(Vz);
285 
286  updateHit();
287 
289 }
290 
292  // LogDebug("ForwardSim") << "INSIDE CREATE NEW HIT EVO ";
293 
294  currentHit = new TotemG4Hit;
299 
306 
307  // LogDebug("ForwardSim") << Posizio.x() << " " << Posizio.y() << " " << Posizio.z();
308 
310  currentHit->setVx(Vx);
311  currentHit->setVy(Vy);
312  currentHit->setVz(Vz);
313 
314  G4ThreeVector _PosizioEvo;
315  int flagAcc = 0;
316  _PosizioEvo = posizioEvo(Posizio, Vx, Vy, Vz, Pabs, flagAcc);
317 
318  if (flagAcc == 1) {
319  currentHit->setEntry(_PosizioEvo.x(), _PosizioEvo.y(), _PosizioEvo.z());
320 
321  updateHit();
322 
324  }
325  // LogDebug("ForwardSim") << "STORED HIT IN: " << unitID;
326 }
327 
328 G4ThreeVector TotemSD::posizioEvo(
329  const G4ThreeVector& Pos, double vx, double vy, double vz, double pabs, int& accettanza) {
330  accettanza = 0;
331  //Pos.xyz() in mm
332  G4ThreeVector PosEvo;
333  double ThetaX = std::atan((Pos.x() - vx) / (Pos.z() - vz));
334  double ThetaY = std::atan((Pos.y() - vy) / (Pos.z() - vz));
335  double X_at_0 = (vx - ((Pos.x() - vx) / (Pos.z() - vz)) * vz) / 1000.;
336  double Y_at_0 = (vy - ((Pos.y() - vy) / (Pos.z() - vz)) * vz) / 1000.;
337 
338  // double temp_evo_X;
339  // double temp_evo_Y;
340  // double temp_evo_Z;
341  // temp_evo_Z = std::abs(Pos.z())/Pos.z()*220000.;
342 
343  //csi=-dp/d
344  double csi = std::abs((7000. - pabs) / 7000.);
345 
346  // all in m
347  const int no_rp = 4;
348  double x_par[no_rp + 1];
349  double y_par[no_rp + 1];
350  //rp z position
351  double rp[no_rp] = {141., 149., 198., 220.};
352  //{lx0,mlx} for each rp; Lx=lx0+mlx*csi
353  double leffx[][2] = {{122.5429, -46.9312}, {125.4194, -49.1849}, {152.6, -81.157}, {98.8914, -131.8390}};
354  //{ly0,mly} for each rp; Ly=ly0+mly*csi
355  double leffy[][2] = {{124.2314, -55.4852}, {127.7825, -57.4503}, {179.455, -76.274}, {273.0931, -40.4626}};
356  //{vx0,mvx0} for each rp; vx=vx0+mvx*csi
357  double avx[][2] = {{0.515483, -1.0123}, {0.494122, -1.0534}, {0.2217, -1.483}, {0.004633, -1.0719}};
358  //{vy0,mvy0} for each rp; vy=vy0+mvy*csi
359  double avy[][2] = {{0.371418, -1.6327}, {0.349035, -1.6955}, {0.0815, -2.59}, {0.007592, -4.0841}};
360  //{D0,md,a,b} for each rp; D=D0+(md+a*thetax)*csi+b*thetax
361  double ddx[][4] = {{-0.082336, -0.092513, 112.3436, -82.5029},
362  {-0.086927, -0.097670, 114.9513, -82.9835},
363  {-0.092117, -0.0915, 180.6236, -82.443},
364  {-0.050470, 0.058837, 208.1106, 20.8198}};
365  // {10sigma_x+0.5mm,10sigma_y+0.5mm}
366  double detlim[][2] = {{0, 0}, {0.0028, 0.0021}, {0, 0}, {0.0008, 0.0013}};
367  //{rmax,dmax}
368  double pipelim[][2] = {{0.026, 0.026}, {0.04, 0.04}, {0.0226, 0.0177}, {0.04, 0.04}};
369 
370  for (int j = 0; j < no_rp; j++) {
371  //y=Ly*thetay+vy*y0
372  //x=Lx*thetax+vx*x0-csi*D
373  y_par[j] = ThetaY * (leffy[j][0] + leffy[j][1] * csi) + (avy[j][0] + avy[j][1] * csi) * Y_at_0;
374  x_par[j] = ThetaX * (leffx[j][0] + leffx[j][1] * csi) + (avx[j][0] + avx[j][1] * csi) * X_at_0 -
375  csi * (ddx[j][0] + (ddx[j][1] + ddx[j][2] * ThetaX) * csi + ddx[j][3] * ThetaX);
376  }
377 
378  //pass TAN@141
379  if (std::abs(y_par[0]) < pipelim[0][1] && sqrt((y_par[0] * y_par[0]) + (x_par[0] * x_par[0])) < pipelim[0][0]) {
380  //pass 149
381  if ((sqrt((y_par[1] * y_par[1]) + (x_par[1] * x_par[1])) < pipelim[1][0]) &&
382  (std::abs(y_par[1]) > detlim[1][1] || x_par[1] > detlim[1][0])) {
383  accettanza = 1;
384  }
385  }
386 
387  //pass TAN@141
388  if (std::abs(y_par[0]) < pipelim[0][1] && sqrt((y_par[0]) * (y_par[0]) + (x_par[0]) * (x_par[0])) < pipelim[0][0]) {
389  //pass Q5@198
390  if (std::abs(y_par[2]) < pipelim[2][1] && sqrt((y_par[2] * y_par[2]) + (x_par[2] * x_par[2])) < pipelim[2][0]) {
391  //pass 220
392  if ((sqrt((y_par[3] * y_par[3]) + (x_par[3] * x_par[3])) < pipelim[3][0]) &&
393  (std::abs(y_par[3]) > detlim[3][1] || x_par[3] > detlim[3][0])) {
394  accettanza = 1;
395 
396  PosEvo.setX(1000 * x_par[3]);
397  PosEvo.setY(1000 * y_par[3]);
398  PosEvo.setZ(1000 * rp[3]);
399  if (Pos.z() < vz)
400  PosEvo.setZ(-1000 * rp[3]);
401  }
402  }
403  }
404  /*
405  LogDebug("ForwardSim") << "\n"
406  << "ACCETTANZA: "<<accettanza << "\n"
407  << "CSI: "<< csi << "\n"
408  << "Theta_X: " << ThetaX << "\n"
409  << "Theta_Y: " << ThetaY << "\n"
410  << "X_at_0: "<< X_at_0 << "\n"
411  << "Y_at_0: "<< Y_at_0 << "\n"
412  << "x_par[3]: "<< x_par[3] << "\n"
413  << "y_par[3]: "<< y_par[3] << "\n"
414  << "pos " << Pos.x() << " " << Pos.y() << " "
415  << Pos.z() << "\n" << "V "<< vx << " " << vy << " "
416  << vz << "\n"
417 */
418  // --------------
419  return PosEvo;
420 }
421 
423  //
424  if (Eloss > 0.) {
425 #ifdef debug
426  LogDebug("ForwardSim") << "G4TotemT1SD updateHit: add eloss " << Eloss << "\nCurrentHit=" << currentHit
427  << ", PostStepPoint=" << postStepPoint->GetPosition();
428 #endif
429 
431  }
432 
433  // buffer for next steps:
434  tsID = tSliceID;
435  primID = primaryID;
437 }
438 
440  if (primID < 0)
441  return;
442  if (hit == nullptr) {
443  edm::LogWarning("ForwardSim") << "TotemSD: hit to be stored is NULL !!";
444  return;
445  }
446 
447  theHC->insert(hit);
448 }
449 
452  incidentEnergy = preStepPoint->GetKineticEnergy();
453 }
TotemG4Hit::setParticleType
void setParticleType(short i)
Definition: TotemG4Hit.cc:150
TotemG4Hit::setUnitID
void setUnitID(uint32_t i)
Definition: TotemG4Hit.cc:129
SimTrackManager
Definition: SimTrackManager.h:35
TotemG4Hit::setTof
void setTof(float e)
Definition: TotemG4Hit.cc:148
TotemSD::posizioEvo
G4ThreeVector posizioEvo(const G4ThreeVector &, double, double, double, double, int &)
Definition: TotemSD.cc:328
TotemSD::previousUnitID
uint32_t previousUnitID
Definition: TotemSD.h:97
TotemSD::incidentEnergy
float incidentEnergy
Definition: TotemSD.h:86
TotemSD::hcID
G4int hcID
Definition: TotemSD.h:89
mps_fire.i
i
Definition: mps_fire.py:355
TotemSD::slave
TrackingSlaveSD * slave
Definition: TotemSD.h:77
MessageLogger.h
TotemG4Hit::getThetaAtEntry
float getThetaAtEntry() const
Definition: TotemG4Hit.cc:152
TotemSD::Eloss
float Eloss
Definition: TotemSD.h:109
TotemT1NumberingScheme
Definition: TotemT1NumberingScheme.h:28
TotemG4Hit::setTimeSlice
void setTimeSlice(double d)
Definition: TotemG4Hit.cc:132
TotemT2NumberingSchemeGem.h
TotemG4Hit::getTrackID
int getTrackID() const
Definition: TotemG4Hit.cc:125
ESHandle.h
TotemG4Hit::getUnitID
uint32_t getUnitID() const
Definition: TotemG4Hit.cc:128
TotemSD::fillHits
void fillHits(edm::PSimHitContainer &, const std::string &) override
Definition: TotemSD.cc:150
SensitiveTkDetector
Definition: SensitiveTkDetector.h:8
TotemG4Hit::getEntry
math::XYZPoint getEntry() const
Definition: TotemG4Hit.cc:114
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
TotemG4Hit::setVy
void setVy(float p)
Definition: TotemG4Hit.cc:174
TotemG4Hit::setParentId
void setParentId(int p)
Definition: TotemG4Hit.cc:168
TotemSD::Tof
float Tof
Definition: TotemSD.h:108
TotemSD::ProcessHits
bool ProcessHits(G4Step *, G4TouchableHistory *) override
Definition: TotemSD.cc:90
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
TotemG4Hit::setEntry
void setEntry(double x, double y, double z)
Definition: TotemG4Hit.h:55
TotemSD::resetForNewPrimary
void resetForNewPrimary()
Definition: TotemSD.cc:450
TrackingSlaveSD.h
TotemNumberMerger.h
TotemRPNumberingScheme
Definition: TotemRPNumberingScheme.h:28
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
TotemSD::Pabs
float Pabs
Definition: TotemSD.h:107
TotemSD::ThetaAtEntry
float ThetaAtEntry
Definition: TotemSD.h:112
TotemSD::hitPoint
G4ThreeVector hitPoint
Definition: TotemSD.h:104
TotemSD::preStepPoint
const G4StepPoint * preStepPoint
Definition: TotemSD.h:101
TotemSD.h
TotemSD::tsID
int tsID
Definition: TotemSD.h:93
TotemSD::createNewHitEvo
void createNewHitEvo()
Definition: TotemSD.cc:291
TotemG4Hit::setTrackID
void setTrackID(int i)
Definition: TotemG4Hit.cc:126
TotemG4Hit::setEnergyLoss
void setEnergyLoss(float e)
Definition: TotemG4Hit.cc:149
TotemSD::tSlice
double tSlice
Definition: TotemSD.h:99
TotemG4Hit::setPhiAtEntry
void setPhiAtEntry(float f)
Definition: TotemG4Hit.cc:156
TotemG4Hit::getTimeSliceID
int getTimeSliceID() const
Definition: TotemG4Hit.cc:133
TotemSD::currentHit
TotemG4Hit * currentHit
Definition: TotemSD.h:94
TotemSD::getStepInfo
void getStepInfo(const G4Step *aStep)
Definition: TotemSD.cc:170
TotemG4Hit::getPhiAtEntry
float getPhiAtEntry() const
Definition: TotemG4Hit.cc:153
TotemSD::~TotemSD
~TotemSD() override
Definition: TotemSD.cc:85
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
G4ProcessTypeEnumerator.h
TotemSD::update
void update(const BeginOfEvent *) override
This routine will be called when the appropriate signal arrives.
Definition: TotemSD.cc:156
TotemG4Hit::getPabs
float getPabs() const
Definition: TotemG4Hit.cc:142
TotemG4Hit::getTof
float getTof() const
Definition: TotemG4Hit.cc:143
TotemSD::PhiAtEntry
float PhiAtEntry
Definition: TotemSD.h:113
SensitiveDetectorCatalog
Definition: SensitiveDetectorCatalog.h:10
Point3DBase< float, LocalTag >
bysipixelclustmulteventfilter_cfi.collectionName
collectionName
Definition: bysipixelclustmulteventfilter_cfi.py:5
TotemG4Hit::setVx
void setVx(float p)
Definition: TotemG4Hit.cc:171
TotemSD::Posizio
G4ThreeVector Posizio
Definition: TotemSD.h:106
TotemSD::updateHit
void updateHit()
Definition: TotemSD.cc:422
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
TrackingSlaveSD::Initialize
virtual void Initialize()
Definition: TrackingSlaveSD.cc:17
TotemSD::storeHit
void storeHit(TotemG4Hit *)
Definition: TotemSD.cc:439
edm::LogWarning
Definition: MessageLogger.h:141
TotemSD::TotemSD
TotemSD(const std::string &, const edm::EventSetup &, const SensitiveDetectorCatalog &, edm::ParameterSet const &, const SimTrackManager *)
Definition: TotemSD.cc:47
TotemSD::currentPV
G4VPhysicalVolume * currentPV
Definition: TotemSD.h:96
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
edm::ParameterSet
Definition: ParameterSet.h:36
TotemSD::theHC
TotemG4HitCollection * theHC
Definition: TotemSD.h:90
TrackingSlaveSD::processHits
virtual bool processHits(const PSimHit &)
Definition: TrackingSlaveSD.cc:52
numberingScheme
static TrackerG4SimHitNumberingScheme & numberingScheme(const GeometricDet &det)
Definition: TkAccumulatingSensitiveDetector.cc:39
TotemRPNumberingScheme.h
TotemSD::createNewHit
void createNewHit()
Definition: TotemSD.cc:246
GeV
const double GeV
Definition: MathUtil.h:16
TotemSD::setToLocal
G4ThreeVector setToLocal(const G4ThreeVector &globalPoint)
Definition: TotemSD.cc:163
createfilelist.int
int
Definition: createfilelist.py:10
TotemSD::Vx
float Vx
Definition: TotemSD.h:116
TotemG4Hit::setThetaAtEntry
void setThetaAtEntry(float t)
Definition: TotemG4Hit.cc:155
TotemT1NumberingScheme.h
UpdatablePSimHit.h
TotemG4Hit::setVz
void setVz(float p)
Definition: TotemG4Hit.cc:177
TrackingSlaveSD
Definition: TrackingSlaveSD.h:11
TotemSD::ParticleType
short ParticleType
Definition: TotemSD.h:110
BeginOfEvent
Definition: BeginOfEvent.h:6
TotemSD::tSliceID
int tSliceID
Definition: TotemSD.h:98
TotemG4HitCollection
G4THitsCollection< TotemG4Hit > TotemG4HitCollection
Definition: TotemG4HitCollection.h:26
TotemSD::numberingScheme
TotemVDetectorOrganization * numberingScheme
Definition: TotemSD.h:78
edm::EventSetup
Definition: EventSetup.h:57
TrackInformation.h
TotemSD::Vy
float Vy
Definition: TotemSD.h:116
TotemSD::EndOfEvent
void EndOfEvent(G4HCofThisEvent *eventHC) override
Definition: TotemSD.cc:118
cc
TotemSD::hitExists
bool hitExists()
Definition: TotemSD.cc:207
TotemSD::postStepPoint
const G4StepPoint * postStepPoint
Definition: TotemSD.h:102
TotemSD::clearHits
void clearHits() override
Definition: TotemSD.cc:161
TotemSD::primID
G4int primID
Definition: TotemSD.h:87
TotemSD::primaryID
int primaryID
Definition: TotemSD.h:98
G4TrackToParticleID.h
TotemSD::entrancePoint
G4ThreeVector entrancePoint
Definition: TotemSD.h:85
TotemG4Hit::getEnergyLoss
float getEnergyLoss() const
Definition: TotemG4Hit.cc:144
TotemG4Hit::getParticleType
int getParticleType() const
Definition: TotemG4Hit.cc:145
LocalPoint.h
TotemSD::PrintAll
void PrintAll() override
Definition: TotemSD.cc:145
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
EventSetup.h
TotemSD::Initialize
void Initialize(G4HCofThisEvent *HCE) override
Definition: TotemSD.cc:106
TotemSD::Vz
float Vz
Definition: TotemSD.h:116
TotemSD::edeposit
float edeposit
Definition: TotemSD.h:103
TrackingSlaveSD::name
std::string name() const
Definition: TrackingSlaveSD.h:21
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
TrackingSlaveSD::hits
std::vector< PSimHit > & hits()
Definition: TrackingSlaveSD.h:22
TotemG4Hit
Definition: TotemG4Hit.h:39
edm::PSimHitContainer
std::vector< PSimHit > PSimHitContainer
Definition: PSimHitContainer.h:11
TotemVDetectorOrganization::getUnitID
virtual uint32_t getUnitID(const G4Step *aStep) const =0
TotemSD::theTrack
G4Track * theTrack
Definition: TotemSD.h:95
PSimHit
Definition: PSimHit.h:15
PbPb_ZMuSkimMuonDPG_cff.particleType
particleType
Definition: PbPb_ZMuSkimMuonDPG_cff.py:27
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
TotemSD::ParentId
int ParentId
Definition: TotemSD.h:115
TotemSD::unitID
uint32_t unitID
Definition: TotemSD.h:97
TotemT2NumberingSchemeGem
Definition: TotemT2NumberingSchemeGem.h:28
TotemG4Hit::setPabs
void setPabs(float e)
Definition: TotemG4Hit.cc:147
LocalVector.h
TotemG4Hit::setIncidentEnergy
void setIncidentEnergy(double e)
Definition: TotemG4Hit.cc:123
TotemSD::setDetUnitId
uint32_t setDetUnitId(const G4Step *) override
Definition: TotemSD.cc:102
hit
Definition: SiStripHitEffFromCalibTree.cc:88