CMS 3D CMS Logo

FP420SD.cc
Go to the documentation of this file.
1 // File: FP420SD.cc
3 // Date: 02.2006
4 // Description: Sensitive Detector class for FP420
5 // Modifications:
7 
12 
16 
21 
25 
28 
29 #include "G4Track.hh"
30 #include "G4SDManager.hh"
31 #include "G4VProcess.hh"
32 #include "G4EventManager.hh"
33 #include "G4Step.hh"
34 #include "G4ParticleTable.hh"
35 
36 #include "G4SystemOfUnits.hh"
37 
38 #include <string>
39 #include <vector>
40 #include <iostream>
41 
43 
44 //#define debug
45 //-------------------------------------------------------------------
47  const SensitiveDetectorCatalog& clg,
48  edm::ParameterSet const& p,
49  const SimTrackManager* manager)
50  : SensitiveTkDetector(name, clg),
51  numberingScheme(nullptr),
52  hcID(-1),
53  theHC(nullptr),
54  theManager(manager),
55  currentHit(nullptr),
56  theTrack(nullptr),
57  currentPV(nullptr),
58  unitID(0),
59  previousUnitID(0),
60  preStepPoint(nullptr),
61  postStepPoint(nullptr),
62  eventno(0) {
63  //Parameters
64  edm::ParameterSet m_p = p.getParameter<edm::ParameterSet>("FP420SD");
65  int verbn = m_p.getUntrackedParameter<int>("Verbosity");
66  //int verbn = 1;
67 
68  SetVerboseLevel(verbn);
69 
70  slave = new TrackingSlaveSD(name);
71 
72  if (name == "FP420SI") {
73  if (verbn > 0) {
74  edm::LogInfo("FP420Sim") << "name = FP420SI and new FP420NumberingSchem";
75  }
77  } else {
78  edm::LogWarning("FP420Sim") << "FP420SD: ReadoutName not supported\n";
79  }
80 }
81 
83  delete slave;
84  delete numberingScheme;
85 }
86 
87 double FP420SD::getEnergyDeposit(G4Step* aStep) { return aStep->GetTotalEnergyDeposit(); }
88 
89 void FP420SD::Initialize(G4HCofThisEvent* HCE) {
90 #ifdef debug
91  LogDebug("FP420Sim") << "FP420SD : Initialize called for " << name << std::endl;
92 #endif
93 
94  theHC = new FP420G4HitCollection(GetName(), collectionName[0]);
95  if (hcID < 0)
96  hcID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]);
97  HCE->AddHitsCollection(hcID, theHC);
98 
99  tsID = -2;
100  // primID = -2;
101  primID = 0;
102 
104 }
105 
106 bool FP420SD::ProcessHits(G4Step* aStep, G4TouchableHistory*) {
107  if (aStep == nullptr) {
108  return true;
109  } else {
110  GetStepInfo(aStep);
111  // LogDebug("FP420Sim") << edeposit <<std::endl;
112 
113  //AZ
114 #ifdef debug
115  LogDebug("FP420Sim") << "FP420SD : number of hits = " << theHC->entries() << std::endl;
116 #endif
117 
118  if (HitExists() == false && edeposit > 0. && theHC->entries() < 200) {
119  CreateNewHit();
120  return true;
121  }
122  }
123  return true;
124 }
125 
126 void FP420SD::GetStepInfo(G4Step* aStep) {
127  preStepPoint = aStep->GetPreStepPoint();
128  postStepPoint = aStep->GetPostStepPoint();
129  theTrack = aStep->GetTrack();
130  hitPoint = preStepPoint->GetPosition();
131  currentPV = preStepPoint->GetPhysicalVolume();
132  hitPointExit = postStepPoint->GetPosition();
133 
134  hitPointLocal = preStepPoint->GetTouchable()->GetHistory()->GetTopTransform().TransformPoint(hitPoint);
135  hitPointLocalExit = preStepPoint->GetTouchable()->GetHistory()->GetTopTransform().TransformPoint(hitPointExit);
136 
137  G4int particleCode = theTrack->GetDefinition()->GetPDGEncoding();
138  if (particleCode == emPDG || particleCode == epPDG || particleCode == gammaPDG) {
139  edepositEM = getEnergyDeposit(aStep);
140  edepositHAD = 0.;
141  } else {
142  edepositEM = 0.;
143  edepositHAD = getEnergyDeposit(aStep);
144  }
145  edeposit = aStep->GetTotalEnergyDeposit();
146  tSlice = (postStepPoint->GetGlobalTime()) / nanosecond;
147  tSliceID = (int)tSlice;
148  unitID = setDetUnitId(aStep);
149 #ifdef debug
150  LogDebug("FP420Sim") << "unitID=" << unitID << std::endl;
151 #endif
152  primaryID = theTrack->GetTrackID();
153  // Position = hitPoint;
154  Pabs = aStep->GetPreStepPoint()->GetMomentum().mag() / GeV;
155  //Tof = 1400. + aStep->GetPostStepPoint()->GetGlobalTime()/nanosecond;
156  Tof = aStep->GetPostStepPoint()->GetGlobalTime() / nanosecond;
157  Eloss = aStep->GetTotalEnergyDeposit() / GeV;
158  ParticleType = theTrack->GetDefinition()->GetPDGEncoding();
159  ThetaAtEntry = aStep->GetPreStepPoint()->GetPosition().theta() / deg;
160  PhiAtEntry = aStep->GetPreStepPoint()->GetPosition().phi() / deg;
161 
162  ParentId = theTrack->GetParentID();
163  Vx = theTrack->GetVertexPosition().x();
164  Vy = theTrack->GetVertexPosition().y();
165  Vz = theTrack->GetVertexPosition().z();
166  X = hitPoint.x();
167  Y = hitPoint.y();
168  Z = hitPoint.z();
169 }
170 
171 uint32_t FP420SD::setDetUnitId(const G4Step* aStep) {
172  return (numberingScheme == nullptr ? 0 : numberingScheme->getUnitID(aStep));
173 }
174 
176  if (primaryID < 1) {
177  edm::LogWarning("FP420Sim") << "***** FP420SD error: primaryID = " << primaryID << " maybe detector name changed";
178  }
179 
180  // Update if in the same detector, time-slice and for same track
181  // if (primaryID == primID && tSliceID == tsID && unitID==previousUnitID) {
182  if (tSliceID == tsID && unitID == previousUnitID) {
183  //AZ:
184  UpdateHit();
185  return true;
186  }
187  // Reset entry point for new primary
188  if (primaryID != primID)
190 
191  //look in the HitContainer whether a hit with the same primID, unitID,
192  //tSliceID already exists:
193 
194  G4bool found = false;
195 
196  // LogDebug("FP420Sim") << "FP420SD: HCollection= " << theHC->entries() <<std::endl;
197  int nhits = theHC->entries();
198  for (int j = 0; j < nhits && !found; j++) {
199  FP420G4Hit* aPreviousHit = (*theHC)[j];
200  if (aPreviousHit->getTrackID() == primaryID && aPreviousHit->getTimeSliceID() == tSliceID &&
201  aPreviousHit->getUnitID() == unitID) {
202  //AZ:
203  currentHit = aPreviousHit;
204  found = true;
205  }
206  }
207 
208  if (found) {
209  //AZ:
210  UpdateHit();
211  return true;
212  } else {
213  return false;
214  }
215 }
216 
220  incidentEnergy = preStepPoint->GetKineticEnergy();
221 }
222 
224  // if (primID<0) return;
225  if (hit == nullptr) {
226  edm::LogWarning("FP420Sim") << "FP420SD: hit to be stored is NULL !!";
227  return;
228  }
229 
230  theHC->insert(hit);
231 }
232 
234 #ifdef debug
235  // << " MVid = " << currentPV->GetMother()->GetCopyNo()
236  LogDebug("FP420Sim") << "FP420SD CreateNewHit for"
237  << " PV " << currentPV->GetName() << " PVid = " << currentPV->GetCopyNo() << " Unit " << unitID
238  << std::endl;
239  LogDebug("FP420Sim") << " primary " << primaryID << " time slice " << tSliceID << " For Track "
240  << theTrack->GetTrackID() << " which is a " << theTrack->GetDefinition()->GetParticleName();
241 
242  if (theTrack->GetTrackID() == 1) {
243  LogDebug("FP420Sim") << " of energy " << theTrack->GetTotalEnergy();
244  } else {
245  LogDebug("FP420Sim") << " daughter of part. " << theTrack->GetParentID();
246  }
247 
248  LogDebug("FP420Sim") << " and created by ";
249  if (theTrack->GetCreatorProcess() != NULL)
250  LogDebug("FP420Sim") << theTrack->GetCreatorProcess()->GetProcessName();
251  else
252  LogDebug("FP420Sim") << "NO process";
253  LogDebug("FP420Sim") << std::endl;
254 #endif
255 
256  currentHit = new FP420G4Hit;
261 
268 
269  // currentHit->setEntry(entrancePoint);
271 
274 
276  currentHit->setVx(Vx);
277  currentHit->setVy(Vy);
278  currentHit->setVz(Vz);
279 
280  currentHit->setX(X);
281  currentHit->setY(Y);
282  currentHit->setZ(Z);
283  //AZ:12.10.2007
284  // UpdateHit();
285  // buffer for next steps:
286  tsID = tSliceID;
287  primID = primaryID;
289 
291 }
292 
294  //
295  if (Eloss > 0.) {
297 
298 #ifdef debug
299  LogDebug("FP420Sim") << "updateHit: add eloss " << Eloss << std::endl;
300  LogDebug("FP420Sim") << "CurrentHit=" << currentHit << ", PostStepPoint=" << postStepPoint->GetPosition()
301  << std::endl;
302 #endif
303  //AZ
304  // currentHit->setEnergyLoss(Eloss);
306  }
307 
308  // buffer for next steps:
309  tsID = tSliceID;
310  primID = primaryID;
312 }
313 
314 G4ThreeVector FP420SD::SetToLocal(const G4ThreeVector& global) {
315  const G4VTouchable* touch = preStepPoint->GetTouchable();
316  theEntryPoint = touch->GetHistory()->GetTopTransform().TransformPoint(global);
317  return theEntryPoint;
318 }
319 
320 G4ThreeVector FP420SD::SetToLocalExit(const G4ThreeVector& globalPoint) {
321  const G4VTouchable* touch = postStepPoint->GetTouchable();
322  theExitPoint = touch->GetHistory()->GetTopTransform().TransformPoint(globalPoint);
323  return theExitPoint;
324 }
325 
326 void FP420SD::EndOfEvent(G4HCofThisEvent*) {
327  // here we loop over transient hits and make them persistent
328 
329  // if(theHC->entries() > 100){
330  // LogDebug("FP420Sim") << "FP420SD: warning!!! Number of hits exceed 100 and =" << theHC->entries() << "\n";
331  // }
332  // for (int j=0; j<theHC->entries() && j<100; j++) {
333  int nhitsHPS240 = 0;
334  int nhitsFP420 = 0;
335  int nhits = theHC->entries();
336  for (int j = 0; j < nhits; j++) {
337  FP420G4Hit* aHit = (*theHC)[j];
338  if ((fabs(aHit->getTof()) > 780. && fabs(aHit->getTof()) < 840.))
339  ++nhitsHPS240;
340  if ((fabs(aHit->getTof()) > 1380. && fabs(aHit->getTof()) < 1450.))
341  ++nhitsFP420;
342  // if(fabs(aHit->getTof()) < 1700.) {
343  if ((fabs(aHit->getTof()) > 780. && fabs(aHit->getTof()) < 840. && nhitsHPS240 < 200.) ||
344  (fabs(aHit->getTof()) > 1380. && fabs(aHit->getTof()) < 1450. && nhitsFP420 < 200.)) {
345 #ifdef ddebug
346  // LogDebug("FP420SD") << " FP420Hit " << j << " " << *aHit << std::endl;
347  LogDebug("FP420Sim") << "hit number" << j << "unit ID = " << aHit->getUnitID() << "\n";
348  LogDebug("FP420Sim") << "entry z " << aHit->getEntry().z() << "\n";
349  LogDebug("FP420Sim") << "entr theta " << aHit->getThetaAtEntry() << "\n";
350 #endif
351 
352  // Local3DPoint locExitPoint(0,0,0);
353  // Local3DPoint locEntryPoint(aHit->getEntry().x(),
354  // aHit->getEntry().y(),
355  // aHit->getEntry().z());
356  Local3DPoint locExitPoint(aHit->getExitLocalP().x(), aHit->getExitLocalP().y(), aHit->getExitLocalP().z());
357  Local3DPoint locEntryPoint(aHit->getEntryLocalP().x(), aHit->getEntryLocalP().y(), aHit->getEntryLocalP().z());
358  // implicit conversion (slicing) to PSimHit!!!
359  slave->processHits(PSimHit(locEntryPoint,
360  locExitPoint, //entryPoint(), exitPoint() Local3DPoint
361  aHit->getPabs(), // pabs() float
362  aHit->getTof(), // tof() float
363  aHit->getEnergyLoss(), // energyLoss() float
364  aHit->getParticleType(), // particleType() int
365  aHit->getUnitID(), // detUnitId() unsigned int
366  aHit->getTrackID(), // trackId() unsigned int
367  aHit->getThetaAtEntry(), // thetaAtEntry() float
368  aHit->getPhiAtEntry())); // phiAtEntry() float
369 
370  //PSimHit( const Local3DPoint& entry, const Local3DPoint& exit,
371  // float pabs, float tof, float eloss, int particleType,
372  // unsigned int detId, unsigned int trackId,
373  // float theta, float phi, unsigned short processType=0) :
374 
375  // LocalVector direction = hit.exitPoint() - hit.entryPoint();
376  //hit.energyLoss
377 
378  /*
379  aHit->getEM(), -
380  aHit->getHadr(), -
381  aHit->getIncidentEnergy(), -
382  aHit->getTimeSlice(), -
383  aHit->getEntry(), -
384  aHit->getParentId(),
385  aHit->getEntryLocalP(), -
386  aHit->getExitLocalP(), -
387  aHit->getX(), -
388  aHit->getY(), -
389  aHit->getZ(), -
390  aHit->getVx(), -
391  aHit->getVy(), -
392  aHit->getVz())); -
393  */
394  } //if Tof<1600. if nhits<100
395  } // for loop on hits
396 
397  Summarize();
398 }
399 
401 
402 void FP420SD::clear() {}
403 
405 
407  LogDebug("FP420Sim") << "FP420SD: Collection " << theHC->GetName() << "\n";
408  theHC->PrintAllHits();
409 }
410 
411 //void FP420SD::SetNumberingScheme(FP420NumberingScheme* scheme){
412 //
413 // if (numberingScheme)
414 // delete numberingScheme;
415 // numberingScheme = scheme;
416 //
417 //}
418 
420  if (slave->name() == hname) {
421  cc = slave->hits();
422  }
423 }
424 
426  LogDebug("ForwardSim") << " Dispatched BeginOfEvent for " << GetName() << " !";
427  clearHits();
428  eventno = (*i)()->GetEventID();
429 }
430 
432  G4ParticleTable* theParticleTable = G4ParticleTable::GetParticleTable();
433  G4String particleName;
434  emPDG = theParticleTable->FindParticle(particleName = "e-")->GetPDGEncoding();
435  epPDG = theParticleTable->FindParticle(particleName = "e+")->GetPDGEncoding();
436  gammaPDG = theParticleTable->FindParticle(particleName = "gamma")->GetPDGEncoding();
437 }
438 
439 void FP420SD::update(const ::EndOfEvent*) {}
440 
442  //AZ:
443  slave->Initialize();
444 }
FP420SD::PhiAtEntry
float PhiAtEntry
Definition: FP420SD.h:121
FP420SD::hitPointLocalExit
G4ThreeVector hitPointLocalExit
Definition: FP420SD.h:114
FP420SD::DrawAll
void DrawAll() override
Definition: FP420SD.cc:404
FP420G4Hit::getEnergyLoss
float getEnergyLoss() const
Definition: FP420G4Hit.cc:140
SimTrackManager
Definition: SimTrackManager.h:35
FP420SD::primaryID
unsigned int primaryID
Definition: FP420SD.h:103
FP420G4Hit::setY
void setY(float t)
Definition: FP420G4Hit.cc:159
FP420SD::X
float X
Definition: FP420SD.h:125
FP420G4Hit::setParentId
void setParentId(int p)
Definition: FP420G4Hit.cc:165
mps_fire.i
i
Definition: mps_fire.py:428
FP420G4Hit::getThetaAtEntry
float getThetaAtEntry() const
Definition: FP420G4Hit.cc:149
MessageLogger.h
FP420G4Hit::getParticleType
int getParticleType() const
Definition: FP420G4Hit.cc:141
FP420SD::Y
float Y
Definition: FP420SD.h:125
FP420G4HitCollection.h
FP420SD::Vy
float Vy
Definition: FP420SD.h:124
SensitiveTkDetector
Definition: SensitiveTkDetector.h:8
FP420G4Hit::setVx
void setVx(float p)
Definition: FP420G4Hit.cc:168
FP420G4HitCollection
G4THitsCollection< FP420G4Hit > FP420G4HitCollection
Definition: FP420G4HitCollection.h:14
FP420SD::theEntryPoint
G4ThreeVector theEntryPoint
Definition: FP420SD.h:87
FP420SD::Tof
float Tof
Definition: FP420SD.h:116
FP420SD::postStepPoint
G4StepPoint * postStepPoint
Definition: FP420SD.h:108
FP420SD::tsID
G4int tsID
Definition: FP420SD.h:96
FP420NumberingScheme.h
FP420SD::currentHit
FP420G4Hit * currentHit
Definition: FP420SD.h:97
FP420SD::hitPointExit
G4ThreeVector hitPointExit
Definition: FP420SD.h:112
FP420SD::hitPoint
G4ThreeVector hitPoint
Definition: FP420SD.h:111
FP420SD::Summarize
void Summarize()
Definition: FP420SD.cc:400
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
FP420SD::hitPointLocal
G4ThreeVector hitPointLocal
Definition: FP420SD.h:113
FP420SD::Eloss
float Eloss
Definition: FP420SD.h:117
TrackingSlaveSD.h
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
FP420SD::HitExists
G4bool HitExists()
Definition: FP420SD.cc:175
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
FP420G4Hit::setEntry
void setEntry(const G4ThreeVector &xyz)
Definition: FP420G4Hit.cc:104
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
FP420SD::PrintAll
void PrintAll() override
Definition: FP420SD.cc:406
FP420SD::edeposit
float edeposit
Definition: FP420SD.h:109
FP420SD::slave
TrackingSlaveSD * slave
Definition: FP420SD.h:83
FP420G4Hit::getUnitID
unsigned int getUnitID() const
Definition: FP420G4Hit.cc:124
FP420G4Hit::addEnergyDeposit
void addEnergyDeposit(double em, double hd)
Definition: FP420G4Hit.cc:131
FP420G4Hit::getEntry
G4ThreeVector getEntry() const
Definition: FP420G4Hit.cc:103
FP420SD::GetStepInfo
void GetStepInfo(G4Step *aStep)
Definition: FP420SD.cc:126
FP420G4Hit::setVz
void setVz(float p)
Definition: FP420G4Hit.cc:174
FP420NumberingScheme::getUnitID
virtual unsigned int getUnitID(const G4Step *aStep) const
Definition: FP420NumberingScheme.cc:45
G4ProcessTypeEnumerator.h
FP420SD::getEnergyDeposit
virtual double getEnergyDeposit(G4Step *step)
Definition: FP420SD.cc:87
FP420G4Hit::setX
void setX(float t)
Definition: FP420G4Hit.cc:156
FP420SD::primID
unsigned int primID
Definition: FP420SD.h:103
HiggsValidation_cfi.particleName
particleName
Definition: HiggsValidation_cfi.py:7
FP420G4Hit::setExitLocalP
void setExitLocalP(const G4ThreeVector &xyz1)
Definition: FP420G4Hit.cc:110
FP420SD::update
void update(const BeginOfRun *) override
This routine will be called when the appropriate signal arrives.
Definition: FP420SD.cc:431
SensitiveDetectorCatalog
Definition: SensitiveDetectorCatalog.h:10
Point3DBase< float, LocalTag >
bysipixelclustmulteventfilter_cfi.collectionName
collectionName
Definition: bysipixelclustmulteventfilter_cfi.py:5
FP420SD::numberingScheme
FP420NumberingScheme * numberingScheme
Definition: FP420SD.h:84
nhits
Definition: HIMultiTrackSelector.h:42
FrameRotation.h
FP420G4Hit::setTrackID
void setTrackID(int i)
Definition: FP420G4Hit.cc:122
FP420G4Hit::getTof
float getTof() const
Definition: FP420G4Hit.cc:139
TrackingSlaveSD::Initialize
virtual void Initialize()
Definition: TrackingSlaveSD.cc:17
FP420SD::FP420SD
FP420SD(const std::string &, const SensitiveDetectorCatalog &, edm::ParameterSet const &, const SimTrackManager *)
Definition: FP420SD.cc:46
FP420SD::entrancePoint
G4ThreeVector entrancePoint
Definition: FP420SD.h:86
FP420SD::currentPV
G4VPhysicalVolume * currentPV
Definition: FP420SD.h:99
FP420G4Hit::setVy
void setVy(float p)
Definition: FP420G4Hit.cc:171
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
FP420SD::ResetForNewPrimary
void ResetForNewPrimary()
Definition: FP420SD.cc:217
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
FP420SD::theHC
FP420G4HitCollection * theHC
Definition: FP420SD.h:93
FP420G4Hit::getTimeSliceID
int getTimeSliceID() const
Definition: FP420G4Hit.cc:129
FP420G4Hit::setTof
void setTof(float e)
Definition: FP420G4Hit.cc:144
TrackingSlaveSD::processHits
virtual bool processHits(const PSimHit &)
Definition: TrackingSlaveSD.cc:52
numberingScheme
static TrackerG4SimHitNumberingScheme & numberingScheme(const GeometricDet &det)
Definition: TkAccumulatingSensitiveDetector.cc:36
FP420SD::theTrack
G4Track * theTrack
Definition: FP420SD.h:98
FP420SD::fillHits
void fillHits(edm::PSimHitContainer &, const std::string &) override
Definition: FP420SD.cc:419
FP420G4Hit::getEntryLocalP
G4ThreeVector getEntryLocalP() const
Definition: FP420G4Hit.cc:106
FP420SD::Initialize
void Initialize(G4HCofThisEvent *HCE) override
Definition: FP420SD.cc:89
GeV
const double GeV
Definition: MathUtil.h:16
FP420SD::~FP420SD
~FP420SD() override
Definition: FP420SD.cc:82
createfilelist.int
int
Definition: createfilelist.py:10
FP420SD::epPDG
G4int epPDG
Definition: FP420SD.h:135
FP420G4Hit::getExitLocalP
G4ThreeVector getExitLocalP() const
Definition: FP420G4Hit.cc:109
FP420G4Hit::setUnitID
void setUnitID(unsigned int i)
Definition: FP420G4Hit.cc:125
FP420G4Hit::setEntryLocalP
void setEntryLocalP(const G4ThreeVector &xyz1)
Definition: FP420G4Hit.cc:107
UpdatablePSimHit.h
TrackingSlaveSD
Definition: TrackingSlaveSD.h:11
FP420SD::exitPoint
G4ThreeVector exitPoint
Definition: FP420SD.h:86
BeginOfEvent
Definition: BeginOfEvent.h:6
BeginOfRun
Definition: BeginOfRun.h:6
FP420SD::tSlice
G4double tSlice
Definition: FP420SD.h:105
TrackInformation.h
FP420SD::ParticleType
short ParticleType
Definition: FP420SD.h:118
FP420G4Hit::getPabs
float getPabs() const
Definition: FP420G4Hit.cc:138
FP420G4Hit::setParticleType
void setParticleType(short i)
Definition: FP420G4Hit.cc:147
FP420SD::StoreHit
void StoreHit(FP420G4Hit *)
Definition: FP420SD.cc:223
cc
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
FP420SD::SetToLocal
G4ThreeVector SetToLocal(const G4ThreeVector &global)
Definition: FP420SD.cc:314
FP420SD::clearHits
void clearHits() override
Definition: FP420SD.cc:441
NULL
#define NULL
Definition: scimark2.h:8
FP420SD::EndOfEvent
void EndOfEvent(G4HCofThisEvent *eventHC) override
Definition: FP420SD.cc:326
FP420SD::edepositHAD
float edepositHAD
Definition: FP420SD.h:133
FP420SD::incidentEnergy
float incidentEnergy
Definition: FP420SD.h:90
FP420SD::Vz
float Vz
Definition: FP420SD.h:124
FP420G4Hit::setZ
void setZ(float t)
Definition: FP420G4Hit.cc:162
FP420G4Hit
Definition: FP420G4Hit.h:18
G4TrackToParticleID.h
FP420SD::gammaPDG
G4int gammaPDG
Definition: FP420SD.h:136
FP420SD::clear
void clear() override
Definition: FP420SD.cc:402
FP420SD::preStepPoint
G4StepPoint * preStepPoint
Definition: FP420SD.h:107
FP420G4Hit::getPhiAtEntry
float getPhiAtEntry() const
Definition: FP420G4Hit.cc:150
FP420SD::emPDG
G4int emPDG
Definition: FP420SD.h:134
FP420SD::CreateNewHit
void CreateNewHit()
Definition: FP420SD.cc:233
FP420SD::unitID
uint32_t unitID
Definition: FP420SD.h:101
LocalPoint.h
SimTrackManager.h
FP420SD::SetToLocalExit
G4ThreeVector SetToLocalExit(const G4ThreeVector &globalPoint)
Definition: FP420SD.cc:320
FP420SD::tSliceID
G4int tSliceID
Definition: FP420SD.h:102
FP420SD::ProcessHits
bool ProcessHits(G4Step *, G4TouchableHistory *) override
Definition: FP420SD.cc:106
FP420SD::hcID
G4int hcID
Definition: FP420SD.h:92
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
EventSetup.h
FP420SD::ThetaAtEntry
float ThetaAtEntry
Definition: FP420SD.h:120
FP420G4Hit.h
FP420G4Hit::setPabs
void setPabs(float e)
Definition: FP420G4Hit.cc:143
FP420G4Hit::setPhiAtEntry
void setPhiAtEntry(float f)
Definition: FP420G4Hit.cc:153
FP420SD.h
FP420SD::ParentId
int ParentId
Definition: FP420SD.h:123
TrackingSlaveSD::name
std::string name() const
Definition: TrackingSlaveSD.h:21
TrackingSlaveSD::hits
std::vector< PSimHit > & hits()
Definition: TrackingSlaveSD.h:22
edm::PSimHitContainer
std::vector< PSimHit > PSimHitContainer
Definition: PSimHitContainer.h:11
ParameterSet.h
PSimHit
Definition: PSimHit.h:15
FP420SD::previousUnitID
uint32_t previousUnitID
Definition: FP420SD.h:101
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
FP420SD::Vx
float Vx
Definition: FP420SD.h:124
FP420G4Hit::addEnergyLoss
void addEnergyLoss(float e)
Definition: FP420G4Hit.cc:145
FP420SD::setDetUnitId
uint32_t setDetUnitId(const G4Step *) override
Definition: FP420SD.cc:171
FP420G4Hit::setTimeSlice
void setTimeSlice(double d)
Definition: FP420G4Hit.cc:128
FP420SD::eventno
int eventno
Definition: FP420SD.h:130
FP420SD::Pabs
float Pabs
Definition: FP420SD.h:115
FP420SD::Z
float Z
Definition: FP420SD.h:125
FP420G4Hit::getTrackID
unsigned int getTrackID() const
Definition: FP420G4Hit.cc:121
FP420G4Hit::setEnergyLoss
void setEnergyLoss(float e)
Definition: FP420G4Hit.cc:146
FP420NumberingScheme
Definition: FP420NumberingScheme.h:15
hit
Definition: SiStripHitEffFromCalibTree.cc:88
FP420SD::theExitPoint
G4ThreeVector theExitPoint
Definition: FP420SD.h:88
FP420G4Hit::setThetaAtEntry
void setThetaAtEntry(float t)
Definition: FP420G4Hit.cc:152
FP420SD::UpdateHit
void UpdateHit()
Definition: FP420SD.cc:293
FP420G4Hit::setIncidentEnergy
void setIncidentEnergy(double e)
Definition: FP420G4Hit.cc:119
FP420SD::edepositEM
float edepositEM
Definition: FP420SD.h:133