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