CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 
8 //#include "Geometry/Vector/interface/LocalPoint.h"
9 //#include "Geometry/Vector/interface/LocalVector.h"
10 
15 
19 
24 
28 
30 
31 #include "G4Track.hh"
32 #include "G4SDManager.hh"
33 #include "G4VProcess.hh"
34 #include "G4EventManager.hh"
35 #include "G4Step.hh"
36 #include "G4ParticleTable.hh"
37 
38 #include <string>
39 #include <vector>
40 #include <iostream>
41 
43 
44 #ifdef DUMPPROCESSES
45 #include "G4VProcess.hh"
46 #endif
47 
48 using std::cout;
49 using std::endl;
50 using std::vector;
51 using std::string;
52 
53 //#define debug
54 //-------------------------------------------------------------------
55 FP420SD::FP420SD(std::string name, const DDCompactView & cpv,
57  edm::ParameterSet const & p, const SimTrackManager* manager) :
58  SensitiveTkDetector(name, cpv, clg, p), numberingScheme(0), name(name),
59  hcID(-1), theHC(0), theManager(manager), currentHit(0), theTrack(0),
60  currentPV(0), unitID(0), previousUnitID(0), preStepPoint(0),
61  postStepPoint(0), eventno(0){
62 //-------------------------------------------------------------------
63 /*
64 FP420SD::FP420SD(G4String name, const DDCompactView & cpv,
65  edm::ParameterSet const & p, const SimTrackManager* manager) :
66  CaloSD(name, cpv, p, manager), numberingScheme(0), name(name),hcID(-1),
67  theHC(0), currentHit(0), theTrack(0), currentPV(0),
68  unitID(0), previousUnitID(0), preStepPoint(0), postStepPoint(0), eventno(0){
69 */
70 //-------------------------------------------------------------------
71 
72 
73 
74  //Add FP420 Sentitive Detector Name
75  collectionName.insert(name);
76 
77 
78  //Parameters
80  int verbn = m_p.getUntrackedParameter<int>("Verbosity");
81  //int verbn = 1;
82 
83  SetVerboseLevel(verbn);
84  LogDebug("FP420Sim")
85  << "*******************************************************\n"
86  << "* *\n"
87  << "* Constructing a FP420SD with name " << name << "\n"
88  << "* *\n"
89  << "*******************************************************";
90 
91 
92  slave = new TrackingSlaveSD(name);
93 
94  //
95  // attach detectors (LogicalVolumes)
96  //
97  std::vector<std::string> lvNames = clg.logicalNames(name);
98 
99  this->Register();
100 
101  for (std::vector<std::string>::iterator it=lvNames.begin();
102  it !=lvNames.end(); it++) {
103  this->AssignSD(*it);
104  edm::LogInfo("FP420Sim") << "FP420SD : Assigns SD to LV " << (*it);
105  }
106 
107  if (name == "FP420SI") {
108  if (verbn > 0) {
109  edm::LogInfo("FP420Sim") << "name = FP420SI and new FP420NumberingSchem";
110  std::cout << "name = FP420SI and new FP420NumberingSchem"<< std::endl;
111  }
113  } else {
114  edm::LogWarning("FP420Sim") << "FP420SD: ReadoutName not supported\n";
115  std::cout << "FP420SD: ReadoutName not supported"<< std::endl;
116  }
117 
118  edm::LogInfo("FP420Sim") << "FP420SD: Instantiation completed";
119  std::cout << "FP420SD: Instantiation completed"<< std::endl;
120  }
121 
122 
123 
124 
126  //AZ:
127  if (slave) delete slave;
128 
129  if (numberingScheme)
130  delete numberingScheme;
131 
132 }
133 
134 double FP420SD::getEnergyDeposit(G4Step* aStep) {
135  return aStep->GetTotalEnergyDeposit();
136 }
137 
138 void FP420SD::Initialize(G4HCofThisEvent * HCE) {
139 #ifdef debug
140  LogDebug("FP420Sim") << "FP420SD : Initialize called for " << name << std::endl;
141 #endif
142 
144  if (hcID<0)
145  hcID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]);
146  HCE->AddHitsCollection(hcID, theHC);
147 
148  tsID = -2;
149  // primID = -2;
150  primID = 0;
151 
153 }
154 
155 
156 bool FP420SD::ProcessHits(G4Step * aStep, G4TouchableHistory * ) {
157 
158  if (aStep == NULL) {
159  return true;
160  } else {
161  GetStepInfo(aStep);
162  // LogDebug("FP420Sim") << edeposit <<std::endl;
163 
164  //AZ
165 #ifdef debug
166  LogDebug("FP420Sim") << "FP420SD : number of hits = " << theHC->entries() << std::endl;
167 #endif
168 
169  if (HitExists() == false && edeposit>0. && theHC->entries()< 200 ){
170  CreateNewHit();
171  return true;
172  }
173  }
174  return true;
175 }
176 
177 void FP420SD::GetStepInfo(G4Step* aStep) {
178 
179  preStepPoint = aStep->GetPreStepPoint();
180  postStepPoint= aStep->GetPostStepPoint();
181  theTrack = aStep->GetTrack();
182  hitPoint = preStepPoint->GetPosition();
183  currentPV = preStepPoint->GetPhysicalVolume();
184  hitPointExit = postStepPoint->GetPosition();
185 
186  hitPointLocal = preStepPoint->GetTouchable()->GetHistory()->GetTopTransform().TransformPoint(hitPoint);
187  hitPointLocalExit = preStepPoint->GetTouchable()->GetHistory()->GetTopTransform().TransformPoint(hitPointExit);
188 
189 
190  G4int particleCode = theTrack->GetDefinition()->GetPDGEncoding();
191  if (particleCode == emPDG ||
192  particleCode == epPDG ||
193  particleCode == gammaPDG ) {
194  edepositEM = getEnergyDeposit(aStep); edepositHAD = 0.;
195  } else {
196  edepositEM = 0.; edepositHAD = getEnergyDeposit(aStep);
197  }
198  edeposit = aStep->GetTotalEnergyDeposit();
199  tSlice = (postStepPoint->GetGlobalTime() )/nanosecond;
200  tSliceID = (int) tSlice;
201  unitID = setDetUnitId(aStep);
202 #ifdef debug
203  LogDebug("FP420Sim") << "unitID=" << unitID <<std::endl;
204 #endif
205  primaryID = theTrack->GetTrackID();
206  // Position = hitPoint;
207  Pabs = aStep->GetPreStepPoint()->GetMomentum().mag()/GeV;
208  //Tof = 1400. + aStep->GetPostStepPoint()->GetGlobalTime()/nanosecond;
209  Tof = aStep->GetPostStepPoint()->GetGlobalTime()/nanosecond;
210  Eloss = aStep->GetTotalEnergyDeposit()/GeV;
211  ParticleType = theTrack->GetDefinition()->GetPDGEncoding();
212  ThetaAtEntry = aStep->GetPreStepPoint()->GetPosition().theta()/deg;
213  PhiAtEntry = aStep->GetPreStepPoint()->GetPosition().phi()/deg;
214 
215  ParentId = theTrack->GetParentID();
216  Vx = theTrack->GetVertexPosition().x();
217  Vy = theTrack->GetVertexPosition().y();
218  Vz = theTrack->GetVertexPosition().z();
219  X = hitPoint.x();
220  Y = hitPoint.y();
221  Z = hitPoint.z();
222 }
223 
224 uint32_t FP420SD::setDetUnitId(G4Step * aStep) {
225 
226  return (numberingScheme == 0 ? 0 : numberingScheme->getUnitID(aStep));
227 }
228 
229 
231  if (primaryID<1) {
232  edm::LogWarning("FP420Sim") << "***** FP420SD error: primaryID = "
233  << primaryID
234  << " maybe detector name changed";
235  }
236 
237  // Update if in the same detector, time-slice and for same track
238  // if (primaryID == primID && tSliceID == tsID && unitID==previousUnitID) {
239  if (tSliceID == tsID && unitID==previousUnitID) {
240  //AZ:
241  UpdateHit();
242  return true;
243  }
244  // Reset entry point for new primary
245  if (primaryID != primID)
247 
248  //look in the HitContainer whether a hit with the same primID, unitID,
249  //tSliceID already exists:
250 
251  G4bool found = false;
252 
253  // LogDebug("FP420Sim") << "FP420SD: HCollection= " << theHC->entries() <<std::endl;
254 
255  for (int j=0; j<theHC->entries()&&!found; j++) {
256  FP420G4Hit* aPreviousHit = (*theHC)[j];
257  if (aPreviousHit->getTrackID() == primaryID &&
258  aPreviousHit->getTimeSliceID() == tSliceID &&
259  aPreviousHit->getUnitID() == unitID ) {
260  //AZ:
261  currentHit = aPreviousHit;
262  found = true;
263  }
264  }
265 
266  if (found) {
267  //AZ:
268  UpdateHit();
269  return true;
270  } else {
271  return false;
272  }
273 }
274 
275 
277 
280  incidentEnergy = preStepPoint->GetKineticEnergy();
281 
282 }
283 
284 
286 
287  // if (primID<0) return;
288  if (hit == 0 ) {
289  edm::LogWarning("FP420Sim") << "FP420SD: hit to be stored is NULL !!";
290  return;
291  }
292 
293  theHC->insert( hit );
294 }
295 
296 
298 
299 #ifdef debug
300  // << " MVid = " << currentPV->GetMother()->GetCopyNo()
301  LogDebug("FP420Sim") << "FP420SD CreateNewHit for"
302  << " PV " << currentPV->GetName()
303  << " PVid = " << currentPV->GetCopyNo()
304  << " Unit " << unitID <<std::endl;
305  LogDebug("FP420Sim") << " primary " << primaryID
306  << " time slice " << tSliceID
307  << " For Track " << theTrack->GetTrackID()
308  << " which is a " << theTrack->GetDefinition()->GetParticleName();
309 
310  if (theTrack->GetTrackID()==1) {
311  LogDebug("FP420Sim") << " of energy " << theTrack->GetTotalEnergy();
312  } else {
313  LogDebug("FP420Sim") << " daughter of part. " << theTrack->GetParentID();
314  }
315 
316  LogDebug("FP420Sim") << " and created by " ;
317  if (theTrack->GetCreatorProcess()!=NULL)
318  LogDebug("FP420Sim") << theTrack->GetCreatorProcess()->GetProcessName() ;
319  else
320  LogDebug("FP420Sim") << "NO process";
321  LogDebug("FP420Sim") << std::endl;
322 #endif
323 
324 
325  currentHit = new FP420G4Hit;
330 
337 
338 // currentHit->setEntry(entrancePoint);
340 
343 
345  currentHit->setVx(Vx);
346  currentHit->setVy(Vy);
347  currentHit->setVz(Vz);
348 
349  currentHit->setX(X);
350  currentHit->setY(Y);
351  currentHit->setZ(Z);
352  //AZ:12.10.2007
353  // UpdateHit();
354  // buffer for next steps:
355  tsID = tSliceID;
356  primID = primaryID;
358 
360 }
361 
362 
364  //
365  if (Eloss > 0.) {
367 
368 #ifdef debug
369  LogDebug("FP420Sim") << "updateHit: add eloss " << Eloss <<std::endl;
370  LogDebug("FP420Sim") << "CurrentHit=" << currentHit
371  << ", PostStepPoint=" << postStepPoint->GetPosition() << std::endl;
372 #endif
373  //AZ
374  // currentHit->setEnergyLoss(Eloss);
376  }
377 
378 
379 
380  // buffer for next steps:
381  tsID = tSliceID;
382  primID = primaryID;
384 }
385 
386 
387 G4ThreeVector FP420SD::SetToLocal(G4ThreeVector global){
388 
389  const G4VTouchable* touch= preStepPoint->GetTouchable();
390  theEntryPoint = touch->GetHistory()->GetTopTransform().TransformPoint(global);
391  return theEntryPoint;
392 }
393 
394 
395 G4ThreeVector FP420SD::SetToLocalExit(G4ThreeVector globalPoint){
396 
397  const G4VTouchable* touch= postStepPoint->GetTouchable();
398  theExitPoint = touch->GetHistory()->GetTopTransform().TransformPoint(globalPoint);
399  return theExitPoint;
400 }
401 
402 
403 void FP420SD::EndOfEvent(G4HCofThisEvent* ) {
404 
405  // here we loop over transient hits and make them persistent
406 
407  // if(theHC->entries() > 100){
408  // LogDebug("FP420Sim") << "FP420SD: warning!!! Number of hits exceed 100 and =" << theHC->entries() << "\n";
409  // }
410  // for (int j=0; j<theHC->entries() && j<100; j++) {
411  int nhitsHPS240=0;
412  int nhitsFP420=0;
413  for (int j=0; j<theHC->entries(); j++) {
414  FP420G4Hit* aHit = (*theHC)[j];
415  if((fabs(aHit->getTof())> 780. && fabs(aHit->getTof())< 840.)) ++nhitsHPS240;
416  if((fabs(aHit->getTof())>1380. && fabs(aHit->getTof())<1450.)) ++nhitsFP420;
417  // if(fabs(aHit->getTof()) < 1700.) {
418  if((fabs(aHit->getTof())>780. && fabs(aHit->getTof())<840. && nhitsHPS240<200.) || ( fabs(aHit->getTof())>1380. && fabs(aHit->getTof())<1450. && nhitsFP420<200.)) {
419 
420 
421 #ifdef ddebug
422  // LogDebug("FP420SD") << " FP420Hit " << j << " " << *aHit << std::endl;
423  LogDebug("FP420Sim") << "hit number" << j << "unit ID = "<<aHit->getUnitID()<< "\n";
424  LogDebug("FP420Sim") << "entry z " << aHit->getEntry().z()<< "\n";
425  LogDebug("FP420Sim") << "entr theta " << aHit->getThetaAtEntry()<< "\n";
426 #endif
427 
428  // Local3DPoint locExitPoint(0,0,0);
429  // Local3DPoint locEntryPoint(aHit->getEntry().x(),
430  // aHit->getEntry().y(),
431  // aHit->getEntry().z());
432  Local3DPoint locExitPoint(aHit->getExitLocalP().x(),
433  aHit->getExitLocalP().y(),
434  aHit->getExitLocalP().z());
435  Local3DPoint locEntryPoint(aHit->getEntryLocalP().x(),
436  aHit->getEntryLocalP().y(),
437  aHit->getEntryLocalP().z());
438  // implicit conversion (slicing) to PSimHit!!!
439  slave->processHits(PSimHit(locEntryPoint,locExitPoint,//entryPoint(), exitPoint() Local3DPoint
440  aHit->getPabs(),// pabs() float
441  aHit->getTof(), // tof() float
442  aHit->getEnergyLoss(), // energyLoss() float
443  aHit->getParticleType(),// particleType() int
444  aHit->getUnitID(), // detUnitId() unsigned int
445  aHit->getTrackID(),// trackId() unsigned int
446  aHit->getThetaAtEntry(),// thetaAtEntry() float
447  aHit->getPhiAtEntry())); // phiAtEntry() float
448 
449  //PSimHit( const Local3DPoint& entry, const Local3DPoint& exit,
450  // float pabs, float tof, float eloss, int particleType,
451  // unsigned int detId, unsigned int trackId,
452  // float theta, float phi, unsigned short processType=0) :
453 
454  // LocalVector direction = hit.exitPoint() - hit.entryPoint();
455  //hit.energyLoss
456 
457 
458  /*
459  aHit->getEM(), -
460  aHit->getHadr(), -
461  aHit->getIncidentEnergy(), -
462  aHit->getTimeSlice(), -
463  aHit->getEntry(), -
464  aHit->getParentId(),
465  aHit->getEntryLocalP(), -
466  aHit->getExitLocalP(), -
467  aHit->getX(), -
468  aHit->getY(), -
469  aHit->getZ(), -
470  aHit->getVx(), -
471  aHit->getVy(), -
472  aHit->getVz())); -
473  */
474  }//if Tof<1600. if nhits<100
475  } // for loop on hits
476 
477  Summarize();
478 }
479 
480 
482 }
483 
484 
486 }
487 
488 
490 }
491 
492 
494  LogDebug("FP420Sim") << "FP420SD: Collection " << theHC->GetName() << "\n";
495  theHC->PrintAllHits();
496 }
497 
498 
499 //void FP420SD::SetNumberingScheme(FP420NumberingScheme* scheme){
500 //
501 // if (numberingScheme)
502 // delete numberingScheme;
503 // numberingScheme = scheme;
504 //
505 //}
506 
508  if (slave->name() == n) {
509  c=slave->hits();
510  std::cout << "FP420SD: fillHits to PSimHitContainer for name= " << name << std::endl;
511  }
512 }
513 
515  LogDebug("ForwardSim") << " Dispatched BeginOfEvent for " << GetName()
516  << " !" ;
517  clearHits();
518  eventno = (*i)()->GetEventID();
519 }
520 
522 
523  G4ParticleTable * theParticleTable = G4ParticleTable::GetParticleTable();
524  G4String particleName;
525  emPDG = theParticleTable->FindParticle(particleName="e-")->GetPDGEncoding();
526  epPDG = theParticleTable->FindParticle(particleName="e+")->GetPDGEncoding();
527  gammaPDG = theParticleTable->FindParticle(particleName="gamma")->GetPDGEncoding();
528 
529 }
530 
531 void FP420SD::update (const ::EndOfEvent*) {
532 }
533 
535  //AZ:
536  slave->Initialize();
537 }
538 
539 std::vector<std::string> FP420SD::getNames(){
540  std::vector<std::string> temp;
541  temp.push_back(slave->name());
542  return temp;
543 }
544 
#define LogDebug(id)
FP420SD(std::string, const DDCompactView &, SensitiveDetectorCatalog &, edm::ParameterSet const &, const SimTrackManager *)
Definition: FP420SD.cc:55
int eventno
Definition: FP420SD.h:178
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
G4ThreeVector theExitPoint
Definition: FP420SD.h:127
G4int emPDG
Definition: FP420SD.h:183
std::vector< std::string > getNames()
Definition: FP420SD.cc:539
std::vector< std::string > logicalNames(std::string &readoutName)
void setY(float t)
Definition: FP420G4Hit.cc:169
void setEntry(G4ThreeVector xyz)
Definition: FP420G4Hit.cc:116
void setPhiAtEntry(float f)
Definition: FP420G4Hit.cc:163
float getTof() const
Definition: FP420G4Hit.cc:149
float ThetaAtEntry
Definition: FP420SD.h:167
virtual void Initialize(G4HCofThisEvent *HCE)
Definition: FP420SD.cc:138
void setVz(float p)
Definition: FP420G4Hit.cc:184
virtual double getEnergyDeposit(G4Step *step)
Definition: FP420SD.cc:134
G4ThreeVector hitPointExit
Definition: FP420SD.h:159
G4ThreeVector SetToLocal(G4ThreeVector global)
Definition: FP420SD.cc:387
std::string name() const
G4ThreeVector getExitLocalP() const
Definition: FP420G4Hit.cc:121
virtual bool ProcessHits(G4Step *, G4TouchableHistory *)
Definition: FP420SD.cc:156
void setZ(float t)
Definition: FP420G4Hit.cc:172
float Pabs
Definition: FP420SD.h:162
void setPabs(float e)
Definition: FP420G4Hit.cc:153
TrackingSlaveSD * slave
Definition: FP420SD.h:122
#define NULL
Definition: scimark2.h:8
G4StepPoint * preStepPoint
Definition: FP420SD.h:153
void ResetForNewPrimary()
Definition: FP420SD.cc:276
float getPabs() const
Definition: FP420G4Hit.cc:148
type of data representation of DDCompactView
Definition: DDCompactView.h:77
void setVx(float p)
Definition: FP420G4Hit.cc:178
G4int hcID
Definition: FP420SD.h:138
void setTrackID(int i)
Definition: FP420G4Hit.cc:134
unsigned int getTrackID() const
Definition: FP420G4Hit.cc:133
void addEnergyDeposit(double em, double hd)
Definition: FP420G4Hit.cc:143
G4int tsID
Definition: FP420SD.h:142
static TrackerG4SimHitNumberingScheme & numberingScheme(const DDCompactView &cpv, const GeometricDet &det)
unsigned int primaryID
Definition: FP420SD.h:149
float Eloss
Definition: FP420SD.h:164
unsigned int primID
Definition: FP420SD.h:149
virtual uint32_t setDetUnitId(G4Step *)
Definition: FP420SD.cc:224
float getPhiAtEntry() const
Definition: FP420G4Hit.cc:160
virtual void EndOfEvent(G4HCofThisEvent *eventHC)
Definition: FP420SD.cc:403
G4ThreeVector exitPoint
Definition: FP420SD.h:125
float edeposit
Definition: FP420SD.h:155
void update(const BeginOfRun *)
This routine will be called when the appropriate signal arrives.
Definition: FP420SD.cc:521
unsigned int getUnitID() const
Definition: FP420G4Hit.cc:136
void setEnergyLoss(float e)
Definition: FP420G4Hit.cc:156
std::vector< PSimHit > & hits()
std::string name
Definition: FP420SD.h:137
std::string const collectionName[nCollections]
Definition: Collections.h:39
G4ThreeVector theEntryPoint
Definition: FP420SD.h:126
void setTof(float e)
Definition: FP420G4Hit.cc:154
virtual void Initialize()
float edepositHAD
Definition: FP420SD.h:182
G4ThreeVector SetToLocalExit(G4ThreeVector globalPoint)
Definition: FP420SD.cc:395
float Vz
Definition: FP420SD.h:171
void GetStepInfo(G4Step *aStep)
Definition: FP420SD.cc:177
G4int gammaPDG
Definition: FP420SD.h:185
FP420G4HitCollection * theHC
Definition: FP420SD.h:139
void CreateNewHit()
Definition: FP420SD.cc:297
G4Track * theTrack
Definition: FP420SD.h:144
void Summarize()
Definition: FP420SD.cc:481
int j
Definition: DBlmapReader.cc:9
G4int tSliceID
Definition: FP420SD.h:148
G4ThreeVector getEntryLocalP() const
Definition: FP420G4Hit.cc:118
G4bool HitExists()
Definition: FP420SD.cc:230
void fillHits(edm::PSimHitContainer &, std::string use)
Definition: FP420SD.cc:507
void setTimeSlice(double d)
Definition: FP420G4Hit.cc:140
virtual void clear()
Definition: FP420SD.cc:485
virtual unsigned int getUnitID(const G4Step *aStep) const
float getEnergyLoss() const
Definition: FP420G4Hit.cc:150
G4THitsCollection< FP420G4Hit > FP420G4HitCollection
void setIncidentEnergy(double e)
Definition: FP420G4Hit.cc:131
uint32_t previousUnitID
Definition: FP420SD.h:147
int getTimeSliceID() const
Definition: FP420G4Hit.cc:141
G4VPhysicalVolume * currentPV
Definition: FP420SD.h:145
void setX(float t)
Definition: FP420G4Hit.cc:166
float Tof
Definition: FP420SD.h:163
virtual void DrawAll()
Definition: FP420SD.cc:489
int getParticleType() const
Definition: FP420G4Hit.cc:151
uint32_t unitID
Definition: FP420SD.h:147
float PhiAtEntry
Definition: FP420SD.h:168
float edepositEM
Definition: FP420SD.h:182
virtual ~FP420SD()
Definition: FP420SD.cc:125
short ParticleType
Definition: FP420SD.h:165
void setExitLocalP(G4ThreeVector xyz1)
Definition: FP420G4Hit.cc:122
void setParticleType(short i)
Definition: FP420G4Hit.cc:157
void setThetaAtEntry(float t)
Definition: FP420G4Hit.cc:162
G4ThreeVector hitPointLocalExit
Definition: FP420SD.h:161
virtual void AssignSD(std::string &vname)
FP420NumberingScheme * numberingScheme
Definition: FP420SD.h:123
G4double tSlice
Definition: FP420SD.h:151
float incidentEnergy
Definition: FP420SD.h:134
virtual void clearHits()
Definition: FP420SD.cc:534
void setUnitID(unsigned int i)
Definition: FP420G4Hit.cc:137
int ParentId
Definition: FP420SD.h:170
G4ThreeVector entrancePoint
Definition: FP420SD.h:125
float Z
Definition: FP420SD.h:172
float Vy
Definition: FP420SD.h:171
virtual bool processHits(const PSimHit &)
tuple cout
Definition: gather_cfg.py:121
void UpdateHit()
Definition: FP420SD.cc:363
std::vector< PSimHit > PSimHitContainer
G4ThreeVector getEntry() const
Definition: FP420G4Hit.cc:115
G4int epPDG
Definition: FP420SD.h:184
G4StepPoint * postStepPoint
Definition: FP420SD.h:154
void setParentId(int p)
Definition: FP420G4Hit.cc:175
float X
Definition: FP420SD.h:172
FP420G4Hit * currentHit
Definition: FP420SD.h:143
G4ThreeVector hitPointLocal
Definition: FP420SD.h:160
G4ThreeVector hitPoint
Definition: FP420SD.h:157
void addEnergyLoss(float e)
Definition: FP420G4Hit.cc:155
virtual void PrintAll()
Definition: FP420SD.cc:493
float getThetaAtEntry() const
Definition: FP420G4Hit.cc:159
float Y
Definition: FP420SD.h:172
void StoreHit(FP420G4Hit *)
Definition: FP420SD.cc:285
void setVy(float p)
Definition: FP420G4Hit.cc:181
void setEntryLocalP(G4ThreeVector xyz1)
Definition: FP420G4Hit.cc:119
float Vx
Definition: FP420SD.h:171