CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
FP420Test Class Reference
Inheritance diagram for FP420Test:
Observer< const EndOfEvent *> Observer< const EndOfTrack *> Observer< const G4Step *> Observer< const BeginOfTrack *> Observer< const BeginOfEvent *> Observer< const EndOfRun *> Observer< const BeginOfRun *> Observer< const BeginOfJob *> SimWatcher

Public Member Functions

 FP420Test (const edm::ParameterSet &p)
 
 ~FP420Test () override
 
- Public Member Functions inherited from SimWatcher
virtual void beginRun (edm::EventSetup const &)
 
bool isMT () const
 
const SimWatcheroperator= (const SimWatcher &)=delete
 
virtual void registerConsumes (edm::ConsumesCollector)
 
 SimWatcher ()
 
 SimWatcher (const SimWatcher &)=delete
 
virtual ~SimWatcher ()
 
- Public Member Functions inherited from Observer< const BeginOfJob *>
 Observer ()
 
void slotForUpdate (const BeginOfJob * iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const BeginOfRun *>
 Observer ()
 
void slotForUpdate (const BeginOfRun * iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const EndOfRun *>
 Observer ()
 
void slotForUpdate (const EndOfRun * iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const BeginOfEvent *>
 Observer ()
 
void slotForUpdate (const BeginOfEvent * iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const BeginOfTrack *>
 Observer ()
 
void slotForUpdate (const BeginOfTrack * iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const G4Step *>
 Observer ()
 
void slotForUpdate (const G4Step * iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const EndOfTrack *>
 Observer ()
 
void slotForUpdate (const EndOfTrack * iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const EndOfEvent *>
 Observer ()
 
void slotForUpdate (const EndOfEvent * iT)
 
virtual ~Observer ()
 

Private Member Functions

void detectorLevel (const G4VTouchable *, int &, int *, G4String *) const
 
int detLevels (const G4VTouchable *) const
 
G4String detName (const G4VTouchable *, int, int) const
 
void update (const BeginOfJob *run) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const BeginOfRun *run) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const EndOfRun *run) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const BeginOfEvent *evt) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const BeginOfTrack *trk) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const G4Step *step) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const EndOfTrack *trk) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const EndOfEvent *evt) override
 This routine will be called when the appropriate signal arrives. More...
 

Private Attributes

int dn0
 
G4double entot0
 
std::string fDataLabel
 
std::string fOutputFile
 
Float_t fp420eventarray [1]
 
TNtuple * fp420eventntuple
 
TFile fp420OutputFile
 
std::string fRecreateFile
 
double gapBlade
 
int iev
 
int itrk
 
G4ThreeVector lastpo
 
int lastTrackID
 
int numofpart
 
int pn0
 
double rinCalo
 
int rn0
 
int rn00
 
int sn0
 
G4double sumEnerDeposit
 
G4double sumStepc
 
G4double sumStepl
 
Fp420AnalysisHistManagertheHistManager
 
G4double tracklength0
 
int verbosity
 
int whichevent
 
double z1
 
double z2
 
double z3
 
double z4
 
double z420
 
double zBlade
 
double zBoundDet
 
double zD2
 
double zD3
 
double zGapLDet
 
double zinCalo
 
double zinibeg
 
double zSiDet
 
double zSiPlane
 
double zSiStep
 

Additional Inherited Members

- Protected Member Functions inherited from SimWatcher
void setMT (bool val)
 

Detailed Description

Definition at line 91 of file FP420Test.cc.

Constructor & Destructor Documentation

◆ FP420Test()

FP420Test::FP420Test ( const edm::ParameterSet p)

Definition at line 161 of file FP420Test.cc.

References fDataLabel, fOutputFile, fp420eventntuple, fRecreateFile, gapBlade, edm::ParameterSet::getParameter(), AlCaHLTBitMon_ParallelJobs::p, pn0, rn00, sn0, AlCaHLTBitMon_QueryRunRegistry::string, theHistManager, verbosity, whichevent, z1, z2, z3, z4, z420, zBlade, zBoundDet, zD2, zD3, zGapLDet, zinibeg, zSiDet, zSiPlane, and zSiStep.

161  {
162  //constructor
163  edm::ParameterSet m_Anal = p.getParameter<edm::ParameterSet>("FP420Test");
164  verbosity = m_Anal.getParameter<int>("Verbosity");
165  //verbosity = 1;
166 
167  fDataLabel = m_Anal.getParameter<std::string>("FDataLabel");
168  fOutputFile = m_Anal.getParameter<std::string>("FOutputFile");
169  fRecreateFile = m_Anal.getParameter<std::string>("FRecreateFile");
170 
171  if (verbosity > 0) {
172  edm::LogVerbatim("FP420Test") << "============================================================================";
173  edm::LogVerbatim("FP420Test") << "FP420Testconstructor :: Initialized as observer";
174  }
175  // Initialization:
176 
177  pn0 = 6;
178  sn0 = 3;
179  rn00 = 7;
180 
181  z420 = 420000.0; // mm
182  zD2 = 4000.0; // mm
183  zD3 = 8000.0; // mm
184  //
185  zBlade = 5.00;
186  gapBlade = 1.6;
187  double gapSupplane = 1.6;
188  zSiPlane = 2 * zBlade + gapBlade + gapSupplane;
189 
190  double zKapton = 0.1;
191  zSiStep = zSiPlane + zKapton;
192 
193  double zBoundDet = 0.020;
194  double zSiElectr = 0.250;
195  double zCeramDet = 0.500;
196  //
197  zSiDet = 0.250;
198  zGapLDet = zBlade / 2 - (zSiDet + zSiElectr + zBoundDet + zCeramDet / 2);
199  //
200  // zSiStation = 5*(2*(5.+1.6)+0.1)+2*6.+1.0 = 79.5
201  double zSiStation = (pn0 - 1) * (2 * (zBlade + gapBlade) + zKapton) + 2 * 6. + 0.0; // = 78.5
202  // 11.=e1, 12.=e2 in zzzrectangle.xml
203  double eee1 = 11.;
204  double eee2 = 12.;
205 
206  zinibeg = (eee1 - eee2) / 2.;
207 
208  z1 = zinibeg + (zSiStation + 10.) / 2 + z420; // z1 - right after 1st Station
209  z2 = z1 + zD2; //z2 - right after middle Station
210  z3 = z1 + zD3; //z3 - right after last Station
211  z4 = z1 + 2 * zD3;
212  //==================================
213 
214  fp420eventntuple = new TNtuple("NTfp420event", "NTfp420event", "evt");
215 
216  whichevent = 0;
217 
218  // fDataLabel = "defaultData";
219  // fOutputFile = "TheAnlysis.root";
220  // fRecreateFile = "RECREATE";
221 
223 
224  if (verbosity > 0) {
225  edm::LogVerbatim("FP420Test") << "FP420Test constructor :: Initialized Fp420AnalysisHistManager";
226  }
227 }
Log< level::Info, true > LogVerbatim
double z4
Definition: FP420Test.cc:140
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
double zinibeg
Definition: FP420Test.cc:144
double z2
Definition: FP420Test.cc:140
int verbosity
Definition: FP420Test.cc:130
std::string fRecreateFile
Definition: FP420Test.cc:155
double zGapLDet
Definition: FP420Test.cc:144
Fp420AnalysisHistManager * theHistManager
Definition: FP420Test.cc:152
double zD2
Definition: FP420Test.cc:140
std::string fOutputFile
Definition: FP420Test.cc:154
double zBoundDet
Definition: FP420Test.cc:144
int whichevent
Definition: FP420Test.cc:150
double zD3
Definition: FP420Test.cc:140
double zSiPlane
Definition: FP420Test.cc:144
double z3
Definition: FP420Test.cc:140
double z1
Definition: FP420Test.cc:140
double z420
Definition: FP420Test.cc:143
double zSiStep
Definition: FP420Test.cc:144
double gapBlade
Definition: FP420Test.cc:145
double zSiDet
Definition: FP420Test.cc:143
TNtuple * fp420eventntuple
Definition: FP420Test.cc:148
std::string fDataLabel
Definition: FP420Test.cc:153
double zBlade
Definition: FP420Test.cc:145

◆ ~FP420Test()

FP420Test::~FP420Test ( )
override

Definition at line 229 of file FP420Test.cc.

References fOutputFile, fp420eventntuple, fp420OutputFile, fRecreateFile, theHistManager, verbosity, and Fp420AnalysisHistManager::writeToFile().

229  {
230  // delete UserNtuples;
231 
232  TFile fp420OutputFile("newntfp420.root", "RECREATE");
233  edm::LogVerbatim("FP420Test") << "FP420 output root file has been created";
234  fp420eventntuple->Write();
235  edm::LogVerbatim("FP420Test") << "FP420 output root file has been written";
236  fp420OutputFile.Close();
237  edm::LogVerbatim("FP420Test") << "FP420 output root file has been closed";
238  delete fp420eventntuple;
239  edm::LogVerbatim("FP420Test") << "FP420 output root file pointer has been deleted";
240 
241  //------->while end
242 
243  // Write histograms to file
245  if (verbosity > 0) {
246  edm::LogVerbatim("FP420Test") << std::endl << "FP420Test Destructor --------> End of FP420Test : ";
247  }
248 }
Log< level::Info, true > LogVerbatim
void writeToFile(const TString &fOutputFile, const TString &fRecreateFile)
Definition: FP420Test.cc:310
int verbosity
Definition: FP420Test.cc:130
TFile fp420OutputFile
Definition: FP420Test.cc:149
std::string fRecreateFile
Definition: FP420Test.cc:155
Fp420AnalysisHistManager * theHistManager
Definition: FP420Test.cc:152
std::string fOutputFile
Definition: FP420Test.cc:154
TNtuple * fp420eventntuple
Definition: FP420Test.cc:148

Member Function Documentation

◆ detectorLevel()

void FP420Test::detectorLevel ( const G4VTouchable *  touch,
int &  level,
int *  copyno,
G4String *  name 
) const
private

Definition at line 835 of file FP420Test.cc.

References mps_fire::i, cuy::ii, personalPlayback::level, and Skims_PA_cff::name.

Referenced by update().

835  {
836  //Get name and copy numbers
837  if (level > 0) {
838  for (int ii = 0; ii < level; ii++) {
839  int i = level - ii - 1;
840  G4VPhysicalVolume* pv = touch->GetVolume(i);
841  if (pv != nullptr)
842  name[ii] = pv->GetName();
843  else
844  name[ii] = "Unknown";
845  copyno[ii] = touch->GetReplicaNumber(i);
846  }
847  }
848 }
ii
Definition: cuy.py:589

◆ detLevels()

int FP420Test::detLevels ( const G4VTouchable *  touch) const
private

Definition at line 816 of file FP420Test.cc.

Referenced by update().

816  {
817  //Return number of levels
818  if (touch)
819  return ((touch->GetHistoryDepth()) + 1);
820  else
821  return 0;
822 }

◆ detName()

G4String FP420Test::detName ( const G4VTouchable *  touch,
int  level,
int  currentlevel 
) const
private

Definition at line 825 of file FP420Test.cc.

References cuy::ii, and personalPlayback::level.

825  {
826  //Go down to current level
827  if (level > 0 && level >= currentlevel) {
828  int ii = level - currentlevel;
829  return touch->GetVolume(ii)->GetName();
830  } else {
831  return "NotFound";
832  }
833 }
ii
Definition: cuy.py:589

◆ update() [1/8]

void FP420Test::update ( const BeginOfJob )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfJob *>.

Definition at line 414 of file FP420Test.cc.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

414  {
415  //job
416  edm::LogVerbatim("FP420Test") << "FP420Test:beggining of job";
417  ;
418 }
Log< level::Info, true > LogVerbatim

◆ update() [2/8]

void FP420Test::update ( const BeginOfRun )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfRun *>.

Definition at line 421 of file FP420Test.cc.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

421  {
422  //run
423 
424  edm::LogVerbatim("FP420Test") << std::endl << "FP420Test:: Begining of Run";
425 }
Log< level::Info, true > LogVerbatim

◆ update() [3/8]

void FP420Test::update ( const EndOfRun )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const EndOfRun *>.

Definition at line 427 of file FP420Test.cc.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

427 { ; }

◆ update() [4/8]

void FP420Test::update ( const BeginOfEvent )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfEvent *>.

Definition at line 430 of file FP420Test.cc.

References iev, verbosity, and whichevent.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

430  {
431  iev = (*evt)()->GetEventID();
432  if (verbosity > 0) {
433  edm::LogVerbatim("FP420Test") << "FP420Test:update Event number = " << iev;
434  }
435  whichevent++;
436 }
Log< level::Info, true > LogVerbatim
int verbosity
Definition: FP420Test.cc:130
int whichevent
Definition: FP420Test.cc:150

◆ update() [5/8]

void FP420Test::update ( const BeginOfTrack )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfTrack *>.

Definition at line 439 of file FP420Test.cc.

References itrk, numofpart, sumEnerDeposit, sumStepc, sumStepl, tracklength0, and verbosity.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

439  {
440  itrk = (*trk)()->GetTrackID();
441  if (verbosity > 1) {
442  edm::LogVerbatim("FP420Test") << "FP420Test:update BeginOfTrack number = " << itrk;
443  }
444  if (itrk == 1) {
445  sumEnerDeposit = 0.;
446  numofpart = 0;
447  sumStepl = 0.;
448  sumStepc = 0.;
449  tracklength0 = 0.;
450  }
451 }
Log< level::Info, true > LogVerbatim
G4double sumEnerDeposit
Definition: FP420Test.cc:133
int verbosity
Definition: FP420Test.cc:130
G4double sumStepl
Definition: FP420Test.cc:133
int numofpart
Definition: FP420Test.cc:135
G4double sumStepc
Definition: FP420Test.cc:133
G4double tracklength0
Definition: FP420Test.cc:126

◆ update() [6/8]

void FP420Test::update ( const G4Step *  )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const G4Step *>.

Definition at line 554 of file FP420Test.cc.

References detectorLevel(), detLevels(), entot0, mps_fire::i, numofpart, PbPb_ZMuSkimMuonDPG_cff::particleType, sumEnerDeposit, sumStepc, sumStepl, tracklength0, and verbosity.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

554  {
555  // ==========================================================================
556 
557  if (verbosity > 2) {
558  G4int stepnumber = aStep->GetTrack()->GetCurrentStepNumber();
559  edm::LogVerbatim("FP420Test") << "FP420Test:update Step number = " << stepnumber;
560  }
561  // track on aStep: !
562  G4Track* theTrack = aStep->GetTrack();
563  TrackInformation* trkInfo = dynamic_cast<TrackInformation*>(theTrack->GetUserInformation());
564  if (trkInfo == nullptr) {
565  edm::LogVerbatim("FP420Test") << "FP420Test on aStep: No trk info !!!! abort ";
566  }
567  G4int id = theTrack->GetTrackID();
568  G4String particleType = theTrack->GetDefinition()->GetParticleName(); // !!!
569  G4int parentID = theTrack->GetParentID(); // !!!
570  G4TrackStatus trackstatus = theTrack->GetTrackStatus(); // !!!
571  G4double tracklength = theTrack->GetTrackLength(); // Accumulated track length
572  G4ThreeVector trackmom = theTrack->GetMomentum();
573  G4double entot = theTrack->GetTotalEnergy(); // !!! deposited on step
574  G4int curstepnumber = theTrack->GetCurrentStepNumber();
575  // const G4ThreeVector& vert_pos = theTrack->GetVertexPosition(); // vertex ,where this track was created
576  // const G4ThreeVector& vert_mom = theTrack->GetVertexMomentumDirection();
577 
578  // double costheta =vert_mom.z()/sqrt(vert_mom.x()*vert_mom.x()+vert_mom.y()*vert_mom.y()+vert_mom.z()*vert_mom.z());
579  // double theta = acos(min(max(costheta,double(-1.)),double(1.)));
580  // float eta = -log(tan(theta/2));
581  // double phi = -1000.;
582  // if (vert_mom.x() != 0) phi = atan2(vert_mom.y(),vert_mom.x());
583  // if (phi < 0.) phi += twopi;
584  // double phigrad = phi*360./twopi;
585 
586  //G4double trackvel = theTrack->GetVelocity();
587 
588  //edm::LogVerbatim("FP420Test") << " trackstatus= " << trackstatus << " entot= " << entot ;
589 
590  // step points: !
591  G4double stepl = aStep->GetStepLength();
592  G4double EnerDeposit = aStep->GetTotalEnergyDeposit();
593  // pointers: !
594  //G4VPhysicalVolume* physvol = theTrack->GetVolume();
595  //G4VPhysicalVolume* nextphysvol = theTrack->GetNextVolume();
596  //G4Material* materialtr = theTrack->GetMaterial();
597  //G4Material* nextmaterialtr = theTrack->GetNextMaterial();
598 
599  // preStep
600  G4StepPoint* preStepPoint = aStep->GetPreStepPoint();
601  const G4ThreeVector& preposition = preStepPoint->GetPosition();
602  G4ThreeVector prelocalpoint = theTrack->GetTouchable()->GetHistory()->GetTopTransform().TransformPoint(preposition);
603  G4VPhysicalVolume* currentPV = preStepPoint->GetPhysicalVolume();
604  const G4String& prename = currentPV->GetName();
605 
606  const G4VTouchable* pre_touch = preStepPoint->GetTouchable();
607  int pre_levels = detLevels(pre_touch);
608 
609  G4String name1[20];
610  int copyno1[20];
611  for (int i = 0; i < 20; ++i) {
612  name1[i] = "";
613  copyno1[i] = 0;
614  }
615  if (pre_levels > 0) {
616  detectorLevel(pre_touch, pre_levels, copyno1, name1);
617  }
618 
619  // gen_track:
620  // id=1 parentID=1 trackstatus=0,2 tracklength(accumulated) curstepnumber entot vert_pos
621  if (id == 1) {
622  // on 1-st step:
623  if (curstepnumber == 1) {
624  entot0 = entot;
625  //UserNtuples->fillg519(entot0,1.);
626  }
627 
628  // on every step:
629 
630  // for Copper:
631  if (prename == "SBST") {
632  sumStepc += stepl;
633  // =========
634  }
635  // for ststeel:
636  // if(prename == "SBSTs") {
637  if (prename == "SBSTs") {
638  sumStepl += stepl;
639  // =========
640  }
641  // =========
642  // =========
643 
644  // exclude last track point if it is in SD (MI was started their)
645  if (trackstatus != 2) {
646  // for SD: Si Det.: SISTATION:SIPLANE:(SIDETL+BOUNDDET +SIDETR + CERAMDET)
647  if (prename == "SIDETL" || prename == "SIDETR") {
648  if (prename == "SIDETL") {
649  //UserNtuples->fillg569(EnerDeposit,1.);
650  }
651  if (prename == "SIDETR") {
652  //UserNtuples->fillg570(EnerDeposit,1.);
653  }
654 
655  // double numbcont = 10.*(copyno1[2]-1)+copyno1[3];
656 
657  // =========
658  // double xx = preposition.x();
659  // double yy = preposition.y();
660  // double zz = preposition.z();
661  // =========
662  //UserNtuples->fillg580(theta,1.);
663  //UserNtuples->fillg07(phigrad,1.);
664  // double xPrimAtZhit = vert_pos.x() + (zz-vert_pos.z())*tan(theta)*cos(phi);
665  // double yPrimAtZhit = vert_pos.y() + (zz-vert_pos.z())*tan(theta)*sin(phi);
666  // =========
667  // double dx = xPrimAtZhit - xx;
668  // double dy = yPrimAtZhit - yy;
669  // =========
670 
671  // //UserNtuples->fillp212(numbcont,dx,1.);
672  // //UserNtuples->fillp213(numbcont,dy,1.);
673  // =========
674 
675  // last step of current SD Volume:
676  G4String posname = aStep->GetPostStepPoint()->GetPhysicalVolume()->GetName();
677  if ((prename == "SIDETL" && posname != "SIDETL") || (prename == "SIDETR" && posname != "SIDETR")) {
678  if (name1[2] == "SISTATION") {
679  //UserNtuples->fillg539(copyno1[2],1.);
680  }
681  if (name1[3] == "SIPLANE") {
682  //UserNtuples->fillg540(copyno1[3],1.);
683  }
684 
685  if (prename == "SIDETL") {
686  //UserNtuples->fillg541(EnerDeposit,1.);
687  //UserNtuples->fillg561(numbcont,1.);
688  if (copyno1[2] < 2) {
689  //UserNtuples->fillg571(dx,1.);
690  } else if (copyno1[2] < 3) {
691  //UserNtuples->fillg563(dx,1.);
692  if (copyno1[3] < 2) {
693  } else if (copyno1[3] < 3) {
694  //UserNtuples->fillg572(dx,1.);
695  } else if (copyno1[3] < 4) {
696  //UserNtuples->fillg573(dx,1.);
697  } else if (copyno1[3] < 5) {
698  //UserNtuples->fillg574(dx,1.);
699  } else if (copyno1[3] < 6) {
700  //UserNtuples->fillg575(dx,1.);
701  } else if (copyno1[3] < 7) {
702  //UserNtuples->fillg576(dx,1.);
703  } else if (copyno1[3] < 8) {
704  //UserNtuples->fillg577(dx,1.);
705  } else if (copyno1[3] < 9) {
706  //UserNtuples->fillg578(dx,1.);
707  } else if (copyno1[3] < 10) {
708  //UserNtuples->fillg579(dx,1.);
709  }
710  } else if (copyno1[2] < 4) {
711  //UserNtuples->fillg565(dx,1.);
712  } else if (copyno1[2] < 5) {
713  //UserNtuples->fillg567(dx,1.);
714  }
715  }
716  if (prename == "SIDETR") {
717  //UserNtuples->fillg542(EnerDeposit,1.);
718  //UserNtuples->fillg562(numbcont,1.);
719  if (copyno1[2] < 2) {
720  //UserNtuples->fillg581(dy,1.);
721  } else if (copyno1[2] < 3) {
722  //UserNtuples->fillg564(dy,1.);
723  if (copyno1[3] < 2) {
724  } else if (copyno1[3] < 3) {
725  //UserNtuples->fillg582(dy,1.);
726  } else if (copyno1[3] < 4) {
727  //UserNtuples->fillg583(dy,1.);
728  } else if (copyno1[3] < 5) {
729  //UserNtuples->fillg584(dy,1.);
730  } else if (copyno1[3] < 6) {
731  //UserNtuples->fillg585(dy,1.);
732  } else if (copyno1[3] < 7) {
733  //UserNtuples->fillg586(dy,1.);
734  } else if (copyno1[3] < 8) {
735  //UserNtuples->fillg587(dy,1.);
736  } else if (copyno1[3] < 9) {
737  //UserNtuples->fillg588(dy,1.);
738  } else if (copyno1[3] < 10) {
739  //UserNtuples->fillg589(dy,1.);
740  }
741  } else if (copyno1[2] < 4) {
742  //UserNtuples->fillg566(dy,1.);
743  } else if (copyno1[2] < 5) {
744  //UserNtuples->fillg568(dy,1.);
745  }
746  }
747  }
748  }
749  // end of prenames SIDETL // SIDETR
750  }
751  // end of trackstatus != 2
752 
753  // deposition of energy on steps along primary track
754  //UserNtuples->fillg500(EnerDeposit,1.);
755  // collect sum deposited energy on all steps along primary track
756  sumEnerDeposit += EnerDeposit;
757  // position of step for primary track:
758  //UserNtuples->fillg501(preposition.x(),1.);
759  //UserNtuples->fillg502(preposition.y(),1.);
760  //UserNtuples->fillg503(preposition.z(),1.);
761  //UserNtuples->fillg504(preposition.x(),EnerDeposit);
762  //UserNtuples->fillg505(preposition.y(),EnerDeposit);
763  //UserNtuples->fillg506(preposition.z(),EnerDeposit);
764  // 2D step coordinates weighted by energy deposited on step
765  // //UserNtuples->fillp201(preposition.x(),preposition.y(),EnerDeposit);
766  // //UserNtuples->fillp202(preposition.x(),preposition.z(),EnerDeposit);
767  // //UserNtuples->fillp203(preposition.y(),preposition.z(),EnerDeposit);
768  //UserNtuples->filld204(preposition.x(),preposition.y(),EnerDeposit);
769  //UserNtuples->filld205(preposition.x(),preposition.z(),EnerDeposit);
770  //UserNtuples->filld206(preposition.y(),preposition.z(),EnerDeposit);
771  //UserNtuples->filld223(preposition.y(),preposition.z(),EnerDeposit);
772  // last step of primary track
773  if (trackstatus == 2) {
774  // primary track length
775  // //UserNtuples->fillg508(tracklength,1.);
776  tracklength0 = tracklength;
777  // how many steps primary track consist
778  //UserNtuples->fillg509(curstepnumber,1.);
779  // tot. energy of primary track at the end of trajectory(before disappeare)
780  //UserNtuples->fillg510((entot0-entot),1.);
781  //UserNtuples->fillg520((entot0-entot),1.);
782  }
783  }
784  // end of primary track !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
785 
786  if (parentID == 1 && curstepnumber == 1) {
787  // particles deposit their energy along primary track
788  numofpart += 1;
789  // energy of radiated particle
790  //UserNtuples->fillg511(entot,1.);
791  // coordinates of radiated particle
792  //UserNtuples->fillg512(vert_pos.x(),1.);
793  //UserNtuples->fillg513(vert_pos.y(),1.);
794  //UserNtuples->fillg514(vert_pos.z(),1.);
795  //UserNtuples->fillg515(vert_pos.x(),entot);
796  //UserNtuples->fillg516(vert_pos.y(),entot);
797  //UserNtuples->fillg517(vert_pos.z(),entot);
798 
799  //UserNtuples->filld214(vert_pos.x(),vert_pos.y(),1.);
800  //UserNtuples->filld215(vert_pos.x(),vert_pos.z(),1.);
801  //UserNtuples->filld216(vert_pos.y(),vert_pos.z(),1.);
802  //UserNtuples->filld219(vert_pos.y(),vert_pos.z(),1.);
803  //UserNtuples->filld224(vert_pos.y(),vert_pos.z(),1.);
804  if (prename == "SBST") {
805  //UserNtuples->filld225(vert_pos.y(),vert_pos.z(),1.);
806  }
807  if (prename == "SBSTs") {
808  //UserNtuples->filld226(vert_pos.y(),vert_pos.z(),1.);
809  }
810  }
811 
812  // ==========================================================================
813 }
Log< level::Info, true > LogVerbatim
G4double sumEnerDeposit
Definition: FP420Test.cc:133
int verbosity
Definition: FP420Test.cc:130
void detectorLevel(const G4VTouchable *, int &, int *, G4String *) const
Definition: FP420Test.cc:835
G4double entot0
Definition: FP420Test.cc:126
G4double sumStepl
Definition: FP420Test.cc:133
int detLevels(const G4VTouchable *) const
Definition: FP420Test.cc:816
int numofpart
Definition: FP420Test.cc:135
G4double sumStepc
Definition: FP420Test.cc:133
G4double tracklength0
Definition: FP420Test.cc:126

◆ update() [7/8]

void FP420Test::update ( const EndOfTrack )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const EndOfTrack *>.

Definition at line 454 of file FP420Test.cc.

References Fp420AnalysisHistManager::getHisto(), itrk, lastpo, sumEnerDeposit, theHistManager, verbosity, z1, z2, z3, and z4.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

454  {
455  itrk = (*trk)()->GetTrackID();
456  if (verbosity > 1) {
457  edm::LogVerbatim("FP420Test") << "FP420Test:update EndOfTrack number = " << itrk;
458  }
459  if (itrk == 1) {
460  G4double tracklength = (*trk)()->GetTrackLength(); // Accumulated track length
461 
462  theHistManager->getHisto("SumEDep")->Fill(sumEnerDeposit);
463  theHistManager->getHisto("TrackL")->Fill(tracklength);
464 
465  // direction !!!
466  G4ThreeVector vert_mom = (*trk)()->GetVertexMomentumDirection();
467  G4ThreeVector vert_pos = (*trk)()->GetVertexPosition(); // vertex ,where this track was created
468 
469  // float eta = 0.5 * log( (1.+vert_mom.z()) / (1.-vert_mom.z()) );
470  // float phi = atan2(vert_mom.y(),vert_mom.x());
471  // if (phi < 0.) phi += twopi;
472  // float phigrad = phi*180./pi;
473 
474  // float XV = vert_pos.x(); // mm
475  // float YV = vert_pos.y(); // mm
476  //UserNtuples->fillg543(phigrad,1.);
477  //UserNtuples->fillp203(phigrad,sumStepl,1.);
478  //UserNtuples->fillg544(XV,1.);
479  //UserNtuples->fillp201(XV,sumStepl,1.);
480  //UserNtuples->fillg545(YV,1.);
481  //UserNtuples->fillp202(YV,sumStepl,1.);
482 
483  //UserNtuples->fillg524(eta,1.);
484 
485  //UserNtuples->fillg534(sumStepl,1.);
486  //UserNtuples->fillg535(eta,sumStepl);
487  //UserNtuples->fillp207(eta,sumStepl,1.);
488  //UserNtuples->filld217(eta,sumStepl,1.);
489  //UserNtuples->filld220(phigrad,sumStepl,1.);
490  //UserNtuples->filld221(XV,sumStepl,1.);
491  //UserNtuples->filld222(YV,sumStepl,1.);
492  //UserNtuples->fillg537(sumStepc,1.);
493  //UserNtuples->fillg84(sumStepl,1.);
494 
495  // MI = (multiple interactions):
496  if (tracklength < z4) {
497  // //UserNtuples->fillp208(eta,tracklength,1.);
498  //UserNtuples->filld218(eta,tracklength,1.);
499  //UserNtuples->fillg538(sumStepc,1.);
500  //UserNtuples->fillg85(sumStepl,1.);
501  }
502 
503  // last step information
504  const G4Step* aStep = (*trk)()->GetStep();
505  // G4int csn = (*trk)()->GetCurrentStepNumber();
506  // G4double sl = (*trk)()->GetStepLength();
507  // preStep
508  G4StepPoint* preStepPoint = aStep->GetPreStepPoint();
509  lastpo = preStepPoint->GetPosition();
510 
511  // Analysis:
512  if (lastpo.z() < z1 && lastpo.perp() < 100.) {
513  //UserNtuples->fillg525(eta,1.);
514  //UserNtuples->fillg546(XV,1.);
515  //UserNtuples->fillg551(YV,1.);
516  //UserNtuples->fillg556(phigrad,1.);
517  }
518  if ((lastpo.z() > z1 && lastpo.z() < z2) && lastpo.perp() < 100.) {
519  //UserNtuples->fillg526(eta,1.);
520  //UserNtuples->fillg547(XV,1.);
521  //UserNtuples->fillg552(YV,1.);
522  //UserNtuples->fillg557(phigrad,1.);
523  }
524  if (lastpo.z() < z2 && lastpo.perp() < 100.) {
525  //UserNtuples->fillg527(eta,1.);
526  //UserNtuples->fillg548(XV,1.);
527  //UserNtuples->fillg553(YV,1.);
528  //UserNtuples->fillg558(phigrad,1.);
529  //UserNtuples->fillg521(lastpo.x(),1.);
530  //UserNtuples->fillg522(lastpo.y(),1.);
531  //UserNtuples->fillg523(lastpo.z(),1.);
532  }
533  if (lastpo.z() < z3 && lastpo.perp() < 100.) {
534  //UserNtuples->fillg528(eta,1.);
535  //UserNtuples->fillg549(XV,1.);
536  //UserNtuples->fillg554(YV,1.);
537  //UserNtuples->fillg559(phigrad,1.);
538  }
539  if (lastpo.z() < z4 && lastpo.perp() < 100.) {
540  //UserNtuples->fillg529(eta,1.);
541  //UserNtuples->fillg550(XV,1.);
542  //UserNtuples->fillg555(YV,1.);
543  //UserNtuples->fillg560(phigrad,1.);
544  //UserNtuples->fillg531(lastpo.x(),1.);
545  //UserNtuples->fillg532(lastpo.y(),1.);
546  //UserNtuples->fillg533(lastpo.z(),1.);
547  }
548  }
549 }
Log< level::Info, true > LogVerbatim
double z4
Definition: FP420Test.cc:140
G4double sumEnerDeposit
Definition: FP420Test.cc:133
double z2
Definition: FP420Test.cc:140
int verbosity
Definition: FP420Test.cc:130
G4ThreeVector lastpo
Definition: FP420Test.cc:137
Fp420AnalysisHistManager * theHistManager
Definition: FP420Test.cc:152
double z3
Definition: FP420Test.cc:140
double z1
Definition: FP420Test.cc:140
TH1F * getHisto(Int_t Number)
Definition: FP420Test.cc:351

◆ update() [8/8]

void FP420Test::update ( const EndOfEvent )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const EndOfEvent *>.

Definition at line 852 of file FP420Test.cc.

References PVValHelper::eta, dqmMemoryStats::float, fp420eventarray, gapBlade, FP420G4Hit::getEnergyLoss(), FP420G4Hit::getEntry(), FP420G4Hit::getEntryLocalP(), FP420G4Hit::getExitLocalP(), Fp420AnalysisHistManager::getHisto(), FP420G4Hit::getTrackID(), FP420G4Hit::getUnitID(), mps_fire::i, iev, cuy::ii, dqmiolumiharvest::j, lastpo, dqm-mbProfile::log, nhits, npart, ntfp420_evt, numofpart, FP420NumberingScheme::packMYIndex(), phi, pi, pn0, FP420NumberingScheme::realzside(), rn00, hgcalTBTopologyTester_cfi::sector, sn0, funct::tan(), theHistManager, tracklength0, FP420NumberingScheme::unpackCopyIndex(), FP420NumberingScheme::unpackFP420Index(), FP420NumberingScheme::unpackLayerIndex(), FP420NumberingScheme::unpackOrientation(), verbosity, whichevent, z2, z3, z4, z420, zBlade, zD2, zD3, zGapLDet, zinibeg, ecaldqm::zside(), zSiDet, zSiPlane, zSiStep, and geometryCSVtoXML::zz.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), progressbar.ProgressBar::finish(), and MatrixUtil.Steps::overwrite().

852  {
853  // ==========================================================================
854 
855  if (verbosity > 1) {
856  iev = (*evt)()->GetEventID();
857  edm::LogVerbatim("FP420Test") << "FP420Test:update EndOfEvent = " << iev;
858  }
859  // Fill-in ntuple
861 
862  //
863  int trackID = 0;
864  G4PrimaryParticle* thePrim = nullptr;
865 
866  // prim.vertex:
867  G4int nvertex = (*evt)()->GetNumberOfPrimaryVertex();
868  if (nvertex != 1)
869  edm::LogVerbatim("FP420Test") << "FP420Test: My warning: NumberOfPrimaryVertex != 1 --> = " << nvertex;
870 
871  for (int i = 0; i < nvertex; i++) {
872  G4PrimaryVertex* avertex = (*evt)()->GetPrimaryVertex(i);
873  if (avertex == nullptr) {
874  edm::LogVerbatim("FP420Test") << "FP420Test End Of Event ERR: pointer to vertex = 0";
875  continue;
876  }
877  G4int npart = avertex->GetNumberOfParticle();
878  if (npart != 1)
879  edm::LogVerbatim("FP420Test") << "FP420Test: My warning: NumberOfPrimaryPart != 1 --> = " << npart;
880  if (npart == 0)
881  edm::LogVerbatim("FP420Test") << "FP420Test End Of Event ERR: no NumberOfParticle";
882 
883  // find just primary track: track pointer: thePrim
884  if (thePrim == nullptr)
885  thePrim = avertex->GetPrimary(trackID);
886 
887  if (thePrim != nullptr) {
888  // primary vertex:
889  G4double vx = 0., vy = 0., vz = 0.;
890  vx = avertex->GetX0();
891  vy = avertex->GetY0();
892  vz = avertex->GetZ0();
893  //UserNtuples->fillh01(vx);
894  //UserNtuples->fillh02(vy);
895  //UserNtuples->fillh03(vz);
896  theHistManager->getHisto("VtxX")->Fill(vx);
897  theHistManager->getHisto("VtxY")->Fill(vy);
898  theHistManager->getHisto("VtxZ")->Fill(vz);
899  }
900  }
901  // prim.vertex loop end
902 
903  //=========================== thePrim != 0 ================================================================================
904  if (thePrim != nullptr) {
905  // inline G4ParticleDefinition * GetG4code() const
906  // inline G4PrimaryParticle * GetNext() const
907  // inline G4PrimaryParticle * GetDaughter() const
908 
909  // prim.vertex
910  //int ivert = 0 ;
911  //G4PrimaryVertex* avertex = (*evt)()->GetPrimaryVertex(ivert);
912  //G4double vx=0.,vy=0.,vz=0.;
913  //vx = avertex->GetX0();
914  //vy = avertex->GetY0();
915  //vz = avertex->GetZ0();
916 
917  //
918  // number of secondary particles deposited their energy along primary track
919  //UserNtuples->fillg518(numofpart,1.);
920  if (lastpo.z() < z4 && lastpo.perp() < 100.) {
921  //UserNtuples->fillg536(numofpart,1.);
922  }
923  //
924 
925  // direction !!!
926  G4ThreeVector mom = thePrim->GetMomentum();
927 
928  double phi = atan2(mom.y(), mom.x());
929  if (phi < 0.)
930  phi += twopi;
931  double phigrad = phi * 180. / pi;
932 
933  double th = mom.theta();
934  double eta = -log(tan(th / 2));
935  // works OK:
936  // double costheta =mom.z()/sqrt(mom.x()*mom.x()+mom.y()*mom.y()+mom.z()*mom.z());
937  // double theta = acos(min(max(costheta,double(-1.)),double(1.)));
938 
939  //UserNtuples->fillh04(eta);
940  //UserNtuples->fillh05(phigrad);
941  //UserNtuples->fillh06(th);
942 
943  //UserNtuples->fillg13(lastpo.x(),1.);
944  //UserNtuples->fillg14(lastpo.y(),1.);
945  //UserNtuples->fillg15(lastpo.z(),1.);
946 
947  theHistManager->getHisto("PrimaryEta")->Fill(eta);
948  theHistManager->getHisto("PrimaryPhigrad")->Fill(phigrad);
949  theHistManager->getHisto("PrimaryTh")->Fill(th * 180. / pi);
950 
951  theHistManager->getHisto("PrimaryLastpoZ")->Fill(lastpo.z());
952  if (lastpo.z() < z4) {
953  theHistManager->getHisto("PrimaryLastpoX")->Fill(lastpo.x());
954  theHistManager->getHisto("PrimaryLastpoY")->Fill(lastpo.y());
955  }
956  if (numofpart > 4) {
957  theHistManager->getHisto("XLastpoNumofpart")->Fill(lastpo.x());
958  theHistManager->getHisto("YLastpoNumofpart")->Fill(lastpo.y());
959  }
960 
961  // ==========================================================================
962 
963  // hit map for FP420
964  // ==================================
965 
966  std::map<int, float, std::less<int> > themap;
967  std::map<int, float, std::less<int> > themap1;
968 
969  std::map<int, float, std::less<int> > themapxy;
970  std::map<int, float, std::less<int> > themapz;
971  // access to the G4 hit collections: -----> this work OK:
972 
973  // edm::LogInfo("FP420Test") << "1";
974  G4HCofThisEvent* allHC = (*evt)()->GetHCofThisEvent();
975  // edm::LogInfo("FP420Test") << "2";
976  if (verbosity > 0) {
977  edm::LogVerbatim("FP420Test") << "FP420Test: accessed all HC";
978  ;
979  }
980  int CAFIid = G4SDManager::GetSDMpointer()->GetCollectionID("FP420SI");
981  // edm::LogInfo("FP420Test") << "3";
982  // edm::LogVerbatim("FP420Test") << " CAFIid = " << CAFIid;;
983 
984  FP420G4HitCollection* theCAFI = (FP420G4HitCollection*)allHC->GetHC(CAFIid);
985  // CaloG4HitCollection* theCAFI = (CaloG4HitCollection*) allHC->GetHC(CAFIid);
986  if (verbosity > 0) {
987  //edm::LogVerbatim("FP420Test") << "FP420Test: theCAFI = " << theCAFI;
988  edm::LogVerbatim("FP420Test") << "FP420Test: theCAFI->entries = " << theCAFI->entries();
989  }
990  // edm::LogInfo("FP420Test") << "theCAFI->entries="<< theCAFI->entries();
991  theHistManager->getHisto("NumberOfHits")->Fill(theCAFI->entries());
992 
993  // access to the G4 hit collections ----> variant 2: give 0 hits
994  // FP420G4HitCollection * theCAFI;
995  // theCAFI = new FP420G4HitCollection();
996  // ==========================================================================
997  // Silicon Hit collection start
998  //0) if particle goes into flat beam pipe below detector:
999  int varia; // = 0 -all; =1 - MI; =2 - noMI
1000  // Select MI or noMI over all 3 stations
1001  // 1)MI:
1002  // if particle goes through window into detector:
1003  // lastpoint of track in lateral dir. outside the detector and inside in z
1004  // lastpoint of track in lateral dir. outside the detector and inside in z
1005  // for all except zzzmarta.xml
1006  // if( lastpo.z()<z4 || abs(lastpo.x())> 5. || lastpo.y()< 10.2 || lastpo.y()>30.2 ) {
1007  // for zzzmarta.xml
1008  // if( lastpo.z()<z4 || abs(lastpo.x())> 10. || lastpo.y()< 3.2 || lastpo.y()>43.2 ) {
1009  if (lastpo.z() < z4) {
1010  // if( lastpo.z()<z4 && lastpo.perp()< 100. ) {
1011  // if(lastpo.z()<z4 || lastpo.perp()> 45.) {
1012  //UserNtuples->fillg66(theCAFI->entries(),1.);
1013  varia = 1;
1014  } else {
1015  // 2) no MI start in detector:
1016  //UserNtuples->fillg31(numofpart,1.);
1017  //UserNtuples->fillg67(theCAFI->entries(),1.);
1018  varia = 2;
1019  } // no MI end:
1020  int nhits = theCAFI->entries();
1021  for (int j = 0; j < nhits; j++) {
1022  FP420G4Hit* aHit = (*theCAFI)[j];
1023  G4ThreeVector hitPoint = aHit->getEntry();
1024  double zz = hitPoint.z();
1025  theHistManager->getHisto("zHits")->Fill(zz);
1026  if (tracklength0 > 8300.)
1027  theHistManager->getHisto("zHitsTrLoLe")->Fill(zz);
1028  }
1029  // varia = 0;
1030  // if( varia == 0) {
1031  if (varia == 2) {
1032  // .............
1033  // number of hits < 50
1034  // if(theCAFI->entries() <50) {
1035  // if(theCAFI->entries() > 0) {
1036  // if(theCAFI->entries() > -1) {
1037  // .............
1038  //int nhit11 = 0, nhit12 = 0, nhit13 = 0;
1039  double totallosenergy = 0.;
1040  for (int j = 0; j < nhits; j++) {
1041  FP420G4Hit* aHit = (*theCAFI)[j];
1042 
1043  G4ThreeVector hitEntryLocalPoint = aHit->getEntryLocalP();
1044  G4ThreeVector hitExitLocalPoint = aHit->getExitLocalP();
1045  G4ThreeVector hitPoint = aHit->getEntry();
1046  // double elmenergy = aHit->getEM();
1047  // double hadrenergy = aHit->getHadr();
1048  // double incidentEnergyHit = aHit->getIncidentEnergy();
1049  int trackIDhit = aHit->getTrackID();
1050  unsigned int unitID = aHit->getUnitID();
1051  // double timeslice = aHit->getTimeSlice();
1052  // int timesliceID = aHit->getTimeSliceID();
1053  // double depenergy = aHit->getEnergyDeposit();
1054  // float pabs = aHit->getPabs();
1055  // float tof = aHit->getTof();
1056  double losenergy = aHit->getEnergyLoss();
1057  // int particletype = aHit->getParticleType();
1058  // float thetaEntry = aHit->getThetaAtEntry();
1059  // float phiEntry = aHit->getPhiAtEntry();
1060  // float xEntry = aHit->getX();
1061  // float yEntry = aHit->getY();
1062  // float zEntry = aHit->getZ();
1063  // int parentID = aHit->getParentId();
1064  // float vxget = aHit->getVx();
1065  // float vyget = aHit->getVy();
1066  // float vzget = aHit->getVz();
1067 
1068  // double th_hit = hitPoint.theta();
1069  // double eta_hit = -log(tan(th_hit/2));
1070  // double phi_hit = hitPoint.phi();
1071  // if (phi_hit < 0.) phi_hit += twopi;
1072  // double phigrad_hit = phi_hit*180./pi;
1073  //UserNtuples->fillg60(eta_hit,losenergy);
1074  //UserNtuples->fillg61(eta_hit,1.);
1075  //UserNtuples->fillg62(phigrad_hit,losenergy);
1076  //UserNtuples->fillg63(phigrad_hit,1.);
1077 
1078  // double xx = hitPoint.x();
1079  // double yy = hitPoint.y();
1080  double zz = hitPoint.z();
1081 
1082  theHistManager->getHisto("zHitsnoMI")->Fill(zz);
1083 
1084  if (verbosity > 2) {
1085  edm::LogVerbatim("FP420Test") << "FP420Test:zHits = " << zz;
1086  }
1087  // double rr = hitPoint.perp();
1088  /*
1089  if(aHit->getTrackID() == 1) {
1090  emu += aHit->getEnergyDeposit();} else {
1091  erest += aHit->getEnergyDeposit();}
1092  */
1093 
1094  //collect lost in Si en.of hits in every plane and put it into themap[]
1095  //UserNtuples->fillg30(losenergy,1.);
1096  themap[unitID] += losenergy;
1097  totallosenergy += losenergy;
1098 
1099  int det, zside, sector, zmodule;
1100  // CaloNumberingPacker::unpackCastorIndex(unitID, det, zside, sector, zmodule);
1101  FP420NumberingScheme::unpackFP420Index(unitID, det, zside, sector, zmodule);
1102  int justlayer = FP420NumberingScheme::unpackLayerIndex(rn00, zside); // 1,2
1103  if (justlayer < 1 || justlayer > 2) {
1104  edm::LogVerbatim("FP420Test") << "FP420Test:WRONG justlayer= " << justlayer;
1105  }
1106  // zside=1,2 ; zmodule=1,10 ; sector=1,3
1107  //UserNtuples->fillg44(float(sector),1.);
1108  //UserNtuples->fillg45(float(zmodule),1.);
1109  //UserNtuples->fillg46(float(zside),1.);
1110  // int sScale = 20;
1111  // intindex is a continues numbering of FP420
1112  //int zScale = 2; unsigned int intindex = sScale*(sector - 1)+zScale*(zmodule - 1)+zside; //intindex=1-30:X,Y,X,Y,X,Y...
1113  // int zScale = 10; unsigned int intindex = sScale*(sector - 1)+zScale*(zside - 1)+zmodule; //intindex=1-30:XXXXXXXXXX,YYYYYYYYYY,...
1114  //UserNtuples->fillg40(float(intindex),1.);
1115  //UserNtuples->fillg48(float(intindex),losenergy);
1116  //
1117  //=======================================
1118  // G4ThreeVector middle = (hitExitLocalPoint+hitEntryLocalPoint)/2.;
1119  G4ThreeVector middle = (hitExitLocalPoint - hitEntryLocalPoint) / 2.;
1120  themapz[unitID] = hitPoint.z() + fabs(middle.z());
1121  if (verbosity > 2) {
1122  edm::LogVerbatim("FP420Test") << "1111111111111111111111111111111111111111111111111111111111111111111111111 ";
1123  edm::LogVerbatim("FP420Test") << "FP420Test: det, zside, sector, zmodule = " << det << zside << sector
1124  << zmodule;
1125  edm::LogVerbatim("FP420Test") << "FP420Test: justlayer = " << justlayer;
1126  edm::LogVerbatim("FP420Test") << "FP420Test: hitExitLocalPoint = " << hitExitLocalPoint;
1127  edm::LogVerbatim("FP420Test") << "FP420Test: hitEntryLocalPoint = " << hitEntryLocalPoint;
1128  edm::LogVerbatim("FP420Test") << "FP420Test: middle= " << middle;
1129  edm::LogVerbatim("FP420Test") << "FP420Test: hitPoint.z()-419000.= " << hitPoint.z() - 419000.;
1130 
1131  edm::LogVerbatim("FP420Test") << "FP420Test:zHits-419000. = " << themapz[unitID] - 419000.;
1132  }
1133  //=======================================
1134  // Y
1135  if (zside == 1) {
1136  //UserNtuples->fillg24(losenergy,1.);
1137  if (losenergy > 0.00003) {
1138  themap1[unitID] += 1.;
1139  }
1140  }
1141  //X
1142  if (zside == 2) {
1143  //UserNtuples->fillg25(losenergy,1.);
1144  if (losenergy > 0.00005) {
1145  themap1[unitID] += 1.;
1146  }
1147  }
1148  // }
1149  //
1150  /*
1151  if (sector == 1) {
1152  nhit11 += 1;
1153  //UserNtuples->fillg33(rr,1.);
1154  //UserNtuples->fillg11(yy,1.);
1155  }
1156  if (sector == 2) {
1157  nhit12 += 1;
1158  //UserNtuples->fillg34(rr,1.);
1159  //UserNtuples->fillg86(yy,1.);
1160  }
1161  if (sector == 3) {
1162  nhit13 += 1;
1163  //UserNtuples->fillg35(rr,1.);
1164  //UserNtuples->fillg87(yy,1.);
1165  }
1166  */
1167  //UserNtuples->fillg10(xx,1.);
1168  //UserNtuples->fillg12(zz,1.);
1169  //UserNtuples->fillg32(rr,1.);
1170 
1171  // =========
1172  // double xPrimAtZhit = vx + (zz-vz)*tan(th)*cos(phi);
1173  // double yPrimAtZhit = vy + (zz-vz)*tan(th)*sin(phi);
1174 
1175  // double dx = xPrimAtZhit - xx;
1176  // double dy = yPrimAtZhit - yy;
1177 
1178  // Select SD hits
1179  // if(rr<120.) {
1180  // Select MI or noMI over all 3 stations
1181  if (lastpo.z() < z4 && lastpo.perp() < 120.) {
1182  // MIonly:
1183  //UserNtuples->fillg16(lastpo.z(),1.);
1184  //UserNtuples->fillg18(zz,1.);
1185  // Station I
1186  if (zz < z2) {
1187  //UserNtuples->fillg54(dx,1.);
1188  //UserNtuples->fillg55(dy,1.);
1189  }
1190  // Station II
1191  if (zz < z3 && zz > z2) {
1192  //UserNtuples->fillg50(dx,1.);
1193  //UserNtuples->fillg51(dy,1.);
1194  }
1195  // Station III
1196  if (zz < z4 && zz > z3) {
1197  //UserNtuples->fillg64(dx,1.);
1198  //UserNtuples->fillg65(dy,1.);
1199  //UserNtuples->filld209(xx,yy,1.);
1200  }
1201  } else {
1202  // no MIonly:
1203  //UserNtuples->fillg17(lastpo.z(),1.);
1204  //UserNtuples->fillg19(zz,1.);
1205  //UserNtuples->fillg74(incidentEnergyHit,1.);
1206  //UserNtuples->fillg75(float(trackIDhit),1.);
1207  // Station I
1208  if (zz < z2) {
1209  //UserNtuples->fillg56(dx,1.);
1210  //UserNtuples->fillg57(dy,1.);
1211  //UserNtuples->fillg20(numofpart,1.);
1212  //UserNtuples->fillg21(sumEnerDeposit,1.);
1213  if (zside == 1) {
1214  //UserNtuples->fillg26(losenergy,1.);
1215  }
1216  if (zside == 2) {
1217  //UserNtuples->fillg76(losenergy,1.);
1218  }
1219  if (trackIDhit == 1) {
1220  //UserNtuples->fillg70(dx,1.);
1221  //UserNtuples->fillg71(incidentEnergyHit,1.);
1222  //UserNtuples->fillg79(losenergy,1.);
1223  } else {
1224  //UserNtuples->fillg82(dx,1.);
1225  }
1226  }
1227  // Station II
1228  if (zz < z3 && zz > z2) {
1229  //UserNtuples->fillg52(dx,1.);
1230  //UserNtuples->fillg53(dy,1.);
1231  //UserNtuples->fillg22(numofpart,1.);
1232  //UserNtuples->fillg23(sumEnerDeposit,1.);
1233  //UserNtuples->fillg80(incidentEnergyHit,1.);
1234  //UserNtuples->fillg81(float(trackIDhit),1.);
1235  if (zside == 1) {
1236  //UserNtuples->fillg27(losenergy,1.);
1237  }
1238  if (zside == 2) {
1239  //UserNtuples->fillg77(losenergy,1.);
1240  }
1241  if (trackIDhit == 1) {
1242  //UserNtuples->fillg72(dx,1.);
1243  //UserNtuples->fillg73(incidentEnergyHit,1.);
1244  } else {
1245  //UserNtuples->fillg83(dx,1.);
1246  }
1247  }
1248  // Station III
1249  if (zz < z4 && zz > z3) {
1250  //UserNtuples->fillg68(dx,1.);
1251  //UserNtuples->fillg69(dy,1.);
1252  //UserNtuples->filld210(xx,yy,1.);
1253  //UserNtuples->fillg22(numofpart,1.);
1254  //UserNtuples->fillg23(sumEnerDeposit,1.);
1255  if (zside == 1) {
1256  //UserNtuples->fillg28(losenergy,1.);
1257  }
1258  if (zside == 2) {
1259  //UserNtuples->fillg78(losenergy,1.);
1260  }
1261  }
1262  } // MIonly or noMIonly ENDED
1263  // }
1264 
1265  // !!!!!!!!!!!!!
1266 
1267  } // for loop on all hits ENDED ENDED ENDED !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1268 
1269  // !!!!!!!!!!!!!
1270 
1271  //======================================================================================================SUMHIT
1272  //UserNtuples->fillg29(totallosenergy,1.);
1273  //UserNtuples->fillg36(nhit11,1.);
1274  //UserNtuples->fillg37(nhit12,1.);
1275  //UserNtuples->fillg38(nhit13,1.);
1276  //======================================================================================================SUMHIT
1277  // int rn00=3;//test only with 2 sensors in superlayer, not 4
1278  // int rn00=rn0;//always
1279  if (verbosity > 2) {
1280  edm::LogVerbatim("FP420Test") << "22222222222222222222222222222222222222222222222222222222222222222222222222 ";
1281  }
1282  int det = 1;
1283  int allplacesforsensors = 7;
1284  for (int sector = 1; sector < sn0; sector++) {
1285  for (int zmodule = 1; zmodule < pn0; zmodule++) {
1286  for (int zsideinorder = 1; zsideinorder < allplacesforsensors; zsideinorder++) {
1287  int zside = FP420NumberingScheme::realzside(rn00, zsideinorder); //1,3,5,2,4,6
1288  if (verbosity > 2) {
1289  edm::LogVerbatim("FP420Test") << "FP420Test: sector= " << sector << " zmodule= " << zmodule
1290  << " zsideinorder= " << zsideinorder << " zside= " << zside;
1291  }
1292  if (zside != 0) {
1293  int justlayer = FP420NumberingScheme::unpackLayerIndex(rn00, zside); // 1,2
1294  if (justlayer < 1 || justlayer > 2) {
1295  edm::LogVerbatim("FP420Test") << "FP420Test:WRONG justlayer= " << justlayer;
1296  }
1297  int copyinlayer = FP420NumberingScheme::unpackCopyIndex(rn00, zside); // 1,2,3
1298  if (copyinlayer < 1 || copyinlayer > 3) {
1299  edm::LogVerbatim("FP420Test") << "FP420Test:WRONG copyinlayer= " << copyinlayer;
1300  }
1301  int orientation = FP420NumberingScheme::unpackOrientation(rn00, zside); // Front: = 1; Back: = 2
1302  if (orientation < 1 || orientation > 2) {
1303  edm::LogVerbatim("FP420Test") << "FP420Test:WRONG orientation= " << orientation;
1304  }
1305 
1306  // iu is a continues numbering of planes(!) over two arm FP420 set up
1307  int detfixed =
1308  1; // use this treatment for each set up arm, hence no sense to do it defferently for +FP420 and -FP420;
1309  // and ...[ii] massives have prepared in such a way
1310  unsigned int ii =
1311  FP420NumberingScheme::packMYIndex(rn00, pn0, sn0, detfixed, justlayer, sector, zmodule) - 1;
1312  // ii = 0-19 --> 20 items
1313  if (verbosity > 2) {
1314  edm::LogVerbatim("FP420Test")
1315  << "FP420Test: justlayer = " << justlayer << " copyinlayer = " << copyinlayer
1316  << " orientation = " << orientation << " ii= " << ii;
1317  }
1318  double zdiststat = 0.;
1319  if (sn0 < 4) {
1320  if (sector == 2)
1321  zdiststat = zD3;
1322  } else {
1323  if (sector == 2)
1324  zdiststat = zD2;
1325  if (sector == 3)
1326  zdiststat = zD3;
1327  }
1328  double kplane = -(pn0 - 1) / 2 - 0.5 + (zmodule - 1); //-3.5 +0...5 = -3.5,-2.5,-1.5,+2.5,+1.5
1329  double zcurrent = zinibeg + z420 + (zSiStep - zSiPlane) / 2 + kplane * zSiStep + zdiststat;
1330  //double zcurrent = zinibeg +(zSiStep-zSiPlane)/2 + kplane*zSiStep + (sector-1)*zUnit;
1331  if (verbosity > 2) {
1332  edm::LogVerbatim("FP420Test") << "FP420Test: Leftzcurrent-419000. = " << zcurrent - 419000.;
1333  edm::LogVerbatim("FP420Test") << "FP420Test: zGapLDet = " << zGapLDet;
1334  }
1335  if (justlayer == 1) {
1336  if (orientation == 1)
1337  zcurrent += (zGapLDet + zSiDet / 2);
1338  if (orientation == 2)
1339  zcurrent += zBlade - (zGapLDet + zSiDet / 2);
1340  }
1341  if (justlayer == 2) {
1342  if (orientation == 1)
1343  zcurrent += (zGapLDet + zSiDet / 2) + zBlade + gapBlade;
1344  if (orientation == 2)
1345  zcurrent += 2 * zBlade + gapBlade - (zGapLDet + zSiDet / 2);
1346  }
1347  // .
1348  //
1349  if (det == 2)
1350  zcurrent = -zcurrent;
1351  //
1352  if (verbosity > 2) {
1353  edm::LogVerbatim("FP420Test") << "FP420Test: zcurrent-419000. = " << zcurrent - 419000.;
1354  }
1355  //================================== end of for loops in continuius number iu:
1356  } //if(zside!=0
1357  } // for superlayer
1358  } // for zmodule
1359  } // for sector
1360 
1361  if (verbosity > 2) {
1362  edm::LogVerbatim("FP420Test")
1363  << "----------------------------------------------------------------------------- ";
1364  }
1365 
1366  //======================================================================================================CHECK
1367  if (totallosenergy == 0.0) {
1368  edm::LogVerbatim("FP420Test") << "FP420Test: number of hits = " << theCAFI->entries();
1369  for (int j = 0; j < nhits; j++) {
1370  FP420G4Hit* aHit = (*theCAFI)[j];
1371  double losenergy = aHit->getEnergyLoss();
1372  edm::LogVerbatim("FP420Test") << " j hits = " << j << "losenergy = " << losenergy;
1373  }
1374  }
1375  //======================================================================================================CHECK
1376 
1377  //====================================================================================================== HIT START
1378 
1379  // FIBRE Hit collected analysis
1380  /*
1381  double totalEnergy = 0.;
1382  int nhitsX = 0, nhitsY = 0, nsumhit = 0;
1383  for (int sector = 1; sector < 4; sector++) {
1384  int nhitsecX = 0, nhitsecY = 0;
1385  for (int zmodule = 1; zmodule < 11; zmodule++) {
1386  for (int zside = 1; zside < 3; zside++) {
1387  int det = 1;
1388  // int nhit = 0;
1389  // int sScale = 20;
1390  int index = FP420NumberingScheme::packFP420Index(det, zside, sector, zmodule);
1391  double theTotalEnergy = themap[index];
1392  // X planes
1393  if (zside < 2) {
1394  //UserNtuples->fillg47(theTotalEnergy,1.);
1395  if (theTotalEnergy > 0.00003) {
1396  nhitsX += 1;
1397  // nhitsecX += themap1[index];
1398  // nhit=1;
1399  }
1400  }
1401  // Y planes
1402  else {
1403  //UserNtuples->fillg49(theTotalEnergy,1.);
1404  if (theTotalEnergy > 0.00005) {
1405  nhitsY += 1;
1406  // nhitsecY += themap1[index];
1407  // nhit=1;
1408  }
1409  }
1410  // intindex is a continues numbering of FP420
1411  // int zScale=2; unsigned int intindex = sScale*(sector - 1)+zScale*(zmodule - 1)+zside;
1412  // int zScale=10; unsigned int intindex = sScale*(sector - 1)+zScale*(zside - 1)+zmodule;
1413  //UserNtuples->fillg41(float(intindex),theTotalEnergy);
1414  //UserNtuples->fillg42(float(intindex),1.);
1415  //UserNtuples->fillp208(float(intindex),float(nhit),1.);
1416  //UserNtuples->fillp211(float(intindex),float(themap1[index]),1.);
1417  totalEnergy += themap[index];
1418  } // for
1419  } // for
1420  //UserNtuples->fillg39(nhitsecY,1.);
1421  if (nhitsecX > 10 || nhitsecY > 10) {
1422  nsumhit += 1;
1423  //UserNtuples->fillp213(float(sector),float(1.),1.);
1424  } else { //UserNtuples->fillp213(float(sector),float(0.),1.);
1425  }
1426  } // for
1427  //====================================================================================================== HIT END
1428 
1429  //====================================================================================================== HIT ALL
1430  //UserNtuples->fillg43(totalEnergy,1.);
1431  //UserNtuples->fillg58(nhitsX,1.);
1432  //UserNtuples->fillg59(nhitsY,1.);
1433  // if( nsumhit !=0 ) { //UserNtuples->fillp212(vy,float(1.),1.);
1434  if (nsumhit >= 2) { //UserNtuples->fillp212(vy,float(1.),1.);
1435  } else { //UserNtuples->fillp212(vy,float(0.),1.);
1436  }
1437  */
1438  //====================================================================================================== HIT ALL
1439 
1440  //====================================================================================================== number of hits
1441  // .............
1442  // } // number of hits < 50
1443  // .............
1444  } // MI or no MI or all - end
1445 
1446  } // primary end
1447  //=========================== thePrim != 0 end ===
1448  // ==========================================================================
1449  if (verbosity > 0) {
1450  edm::LogVerbatim("FP420Test") << "FP420Test: END OF Event " << (*evt)()->GetEventID();
1451  }
1452 }
static int unpackCopyIndex(int rn0, int zside)
Log< level::Info, true > LogVerbatim
double z4
Definition: FP420Test.cc:140
static int realzside(int rn0, int zsideinorder)
static void unpackFP420Index(const unsigned int &idx, int &det, int &zside, int &station, int &superplane)
double zinibeg
Definition: FP420Test.cc:144
double z2
Definition: FP420Test.cc:140
int verbosity
Definition: FP420Test.cc:130
double npart
Definition: HydjetWrapper.h:46
int zside(DetId const &)
static int unpackLayerIndex(int rn0, int zside)
double zGapLDet
Definition: FP420Test.cc:144
unsigned int getUnitID() const
Definition: FP420G4Hit.cc:125
G4ThreeVector lastpo
Definition: FP420Test.cc:137
const Double_t pi
static unsigned packMYIndex(int rn0, int pn0, int sn0, int det, int zside, int sector, int zmodule)
G4ThreeVector getEntry() const
Definition: FP420G4Hit.cc:104
Fp420AnalysisHistManager * theHistManager
Definition: FP420Test.cc:152
double zD2
Definition: FP420Test.cc:140
unsigned int getTrackID() const
Definition: FP420G4Hit.cc:122
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
int whichevent
Definition: FP420Test.cc:150
G4ThreeVector getEntryLocalP() const
Definition: FP420G4Hit.cc:107
double zD3
Definition: FP420Test.cc:140
double zSiPlane
Definition: FP420Test.cc:144
double z3
Definition: FP420Test.cc:140
Float_t fp420eventarray[1]
Definition: FP420Test.cc:147
TH1F * getHisto(Int_t Number)
Definition: FP420Test.cc:351
ii
Definition: cuy.py:589
double z420
Definition: FP420Test.cc:143
G4THitsCollection< FP420G4Hit > FP420G4HitCollection
double zSiStep
Definition: FP420Test.cc:144
int numofpart
Definition: FP420Test.cc:135
double gapBlade
Definition: FP420Test.cc:145
double zSiDet
Definition: FP420Test.cc:143
G4double tracklength0
Definition: FP420Test.cc:126
float getEnergyLoss() const
Definition: FP420G4Hit.cc:141
static int unpackOrientation(int rn0, int zside)
G4ThreeVector getExitLocalP() const
Definition: FP420G4Hit.cc:110
double zBlade
Definition: FP420Test.cc:145

Member Data Documentation

◆ dn0

int FP420Test::dn0
private

Definition at line 141 of file FP420Test.cc.

◆ entot0

G4double FP420Test::entot0
private

Definition at line 126 of file FP420Test.cc.

Referenced by update().

◆ fDataLabel

std::string FP420Test::fDataLabel
private

Definition at line 153 of file FP420Test.cc.

Referenced by FP420Test().

◆ fOutputFile

std::string FP420Test::fOutputFile
private

Definition at line 154 of file FP420Test.cc.

Referenced by FP420Test(), and ~FP420Test().

◆ fp420eventarray

Float_t FP420Test::fp420eventarray[1]
private

Definition at line 147 of file FP420Test.cc.

Referenced by update().

◆ fp420eventntuple

TNtuple* FP420Test::fp420eventntuple
private

Definition at line 148 of file FP420Test.cc.

Referenced by FP420Test(), and ~FP420Test().

◆ fp420OutputFile

TFile FP420Test::fp420OutputFile
private

Definition at line 149 of file FP420Test.cc.

Referenced by ~FP420Test().

◆ fRecreateFile

std::string FP420Test::fRecreateFile
private

Definition at line 155 of file FP420Test.cc.

Referenced by FP420Test(), and ~FP420Test().

◆ gapBlade

double FP420Test::gapBlade
private

Definition at line 145 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ iev

int FP420Test::iev
private

Definition at line 124 of file FP420Test.cc.

Referenced by update().

◆ itrk

int FP420Test::itrk
private

Definition at line 125 of file FP420Test.cc.

Referenced by update().

◆ lastpo

G4ThreeVector FP420Test::lastpo
private

Definition at line 137 of file FP420Test.cc.

Referenced by update().

◆ lastTrackID

int FP420Test::lastTrackID
private

Definition at line 129 of file FP420Test.cc.

◆ numofpart

int FP420Test::numofpart
private

Definition at line 135 of file FP420Test.cc.

Referenced by update().

◆ pn0

int FP420Test::pn0
private

Definition at line 141 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ rinCalo

double FP420Test::rinCalo
private

Definition at line 128 of file FP420Test.cc.

◆ rn0

int FP420Test::rn0
private

Definition at line 141 of file FP420Test.cc.

◆ rn00

int FP420Test::rn00
private

Definition at line 142 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ sn0

int FP420Test::sn0
private

Definition at line 141 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ sumEnerDeposit

G4double FP420Test::sumEnerDeposit
private

Definition at line 133 of file FP420Test.cc.

Referenced by update().

◆ sumStepc

G4double FP420Test::sumStepc
private

Definition at line 133 of file FP420Test.cc.

Referenced by update().

◆ sumStepl

G4double FP420Test::sumStepl
private

Definition at line 133 of file FP420Test.cc.

Referenced by update().

◆ theHistManager

Fp420AnalysisHistManager* FP420Test::theHistManager
private

Definition at line 152 of file FP420Test.cc.

Referenced by FP420Test(), update(), and ~FP420Test().

◆ tracklength0

G4double FP420Test::tracklength0
private

Definition at line 126 of file FP420Test.cc.

Referenced by update().

◆ verbosity

int FP420Test::verbosity
private

Definition at line 130 of file FP420Test.cc.

Referenced by FP420Test(), update(), and ~FP420Test().

◆ whichevent

int FP420Test::whichevent
private

Definition at line 150 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ z1

double FP420Test::z1
private

Definition at line 140 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ z2

double FP420Test::z2
private

Definition at line 140 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ z3

double FP420Test::z3
private

Definition at line 140 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ z4

double FP420Test::z4
private

Definition at line 140 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ z420

double FP420Test::z420
private

Definition at line 143 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ zBlade

double FP420Test::zBlade
private

Definition at line 145 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ zBoundDet

double FP420Test::zBoundDet
private

Definition at line 144 of file FP420Test.cc.

Referenced by FP420Test().

◆ zD2

double FP420Test::zD2
private

Definition at line 140 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ zD3

double FP420Test::zD3
private

Definition at line 140 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ zGapLDet

double FP420Test::zGapLDet
private

Definition at line 144 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ zinCalo

double FP420Test::zinCalo
private

Definition at line 128 of file FP420Test.cc.

◆ zinibeg

double FP420Test::zinibeg
private

Definition at line 144 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ zSiDet

double FP420Test::zSiDet
private

Definition at line 143 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ zSiPlane

double FP420Test::zSiPlane
private

Definition at line 144 of file FP420Test.cc.

Referenced by FP420Test(), and update().

◆ zSiStep

double FP420Test::zSiStep
private

Definition at line 144 of file FP420Test.cc.

Referenced by FP420Test(), and update().