CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
HFShowerParam Class Reference

#include <HFShowerParam.h>

Classes

struct  Hit
 

Public Member Functions

std::vector< HitgetHits (G4Step *aStep)
 
 HFShowerParam (std::string &name, const DDCompactView &cpv, edm::ParameterSet const &p)
 
void initRun (G4ParticleTable *)
 
virtual ~HFShowerParam ()
 

Private Member Functions

std::vector< double > getDDDArray (const std::string &, const DDsvalues_type &)
 

Private Attributes

bool applyFidCut
 
double attLMeanInv
 
double edMin
 
TH2F * em_2d_1
 
TH2F * em_2d_2
 
TH1F * em_lateral_1
 
TH1F * em_lateral_2
 
TH1F * em_long_1
 
TH1F * em_long_1_tuned
 
TH1F * em_long_2
 
TH1F * em_long_gflash
 
TH1F * em_long_sl
 
G4int emPDG
 
G4int epPDG
 
HFFibrefibre
 
bool fillHisto
 
G4int gammaPDG
 
HFGflashgflash
 
std::vector< double > gpar
 
TH1F * hzv
 
bool onlyLong
 
bool parametrizeLast
 
double pePerGeV
 
double ref_index
 
HFShowerLibraryshowerLibrary
 
bool trackEM
 

Detailed Description

Definition at line 26 of file HFShowerParam.h.

Constructor & Destructor Documentation

HFShowerParam::HFShowerParam ( std::string &  name,
const DDCompactView cpv,
edm::ParameterSet const &  p 
)

Definition at line 26 of file HFShowerParam.cc.

References DDFilteredView::addFilter(), applyFidCut, HFFibre::attLength(), attLMeanInv, edMin, em_2d_1, em_2d_2, em_lateral_1, em_lateral_2, em_long_1, em_long_1_tuned, em_long_2, em_long_gflash, em_long_sl, DDSpecificsFilter::equals, edm::hlt::Exception, fibre, fillHisto, align_tpl::filter, DDFilteredView::firstChild(), getDDDArray(), edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), gflash, gpar, hzv, edm::Service< T >::isAvailable(), LogDebug, TFileDirectory::make(), DDFilteredView::mergedSpecifics(), TFileDirectory::mkdir(), AlCaRecoCosmics_cfg::name, onlyLong, parametrizeLast, pePerGeV, ref_index, DDSpecificsFilter::setCriteria(), showerLibrary, trackEM, and relativeConstraints::value.

27  : showerLibrary(0),
28  fibre(0),
29  gflash(0),
30  fillHisto(false) {
31 
32  edm::ParameterSet m_HF = p.getParameter<edm::ParameterSet>("HFShower");
33  pePerGeV = m_HF.getParameter<double>("PEPerGeV");
34  trackEM = m_HF.getParameter<bool>("TrackEM");
35  bool useShowerLibrary = m_HF.getParameter<bool>("UseShowerLibrary");
36  bool useGflash = m_HF.getParameter<bool>("UseHFGflash");
37  edMin = m_HF.getParameter<double>("EminLibrary");
38  onlyLong = m_HF.getParameter<bool>("OnlyLong");
39  ref_index = m_HF.getParameter<double>("RefIndex");
40  double lambdaMean = m_HF.getParameter<double>("LambdaMean");
41  applyFidCut = m_HF.getParameter<bool>("ApplyFiducialCut");
42  parametrizeLast = m_HF.getUntrackedParameter<bool>("ParametrizeLast",false);
43  edm::LogInfo("HFShower") << "HFShowerParam::Use of shower library is set to "
44  << useShowerLibrary << " Use of Gflash is set to "
45  << useGflash << " P.E. per GeV " << pePerGeV
46  << ", ref. index of fibre " << ref_index
47  << ", Track EM Flag " << trackEM << ", edMin "
48  << edMin << " GeV, use of Short fibre info in"
49  << " shower library set to " << !(onlyLong)
50  << ", use of parametrization for last part set to "
51  << parametrizeLast << ", Mean lambda " << lambdaMean
52  << ", Application of Fiducial Cut " << applyFidCut;
53 
54 #ifdef DebugLog
56  if (tfile.isAvailable()) {
57  fillHisto = true;
58  LogDebug("HFShower") << "HFShowerParam::Save histos in directory "
59  << "ProfileFromParam";
60  TFileDirectory showerDir = tfile->mkdir("ProfileFromParam");
61  hzv = showerDir.make<TH1F>("hzv","Longitudinal Profile;Radiation Length;Number of Spots",330,0.0,1650.0);
62  em_2d_1 = showerDir.make<TH2F>("em_2d_1","Lateral Profile vs. Shower Depth;cm;Events",800,800.0,1600.0,100,50.0,150.0);
63  em_long_1 = showerDir.make<TH1F>("em_long_1","Longitudinal Profile;Radiation Length;Number of Spots",800,800.0,1600.0);
64  em_long_1_tuned = showerDir.make<TH1F>("em_long_1_tuned","Longitudinal Profile;Radiation Length;Number of Spots",800,800.0,1600.0);
65  em_lateral_1 = showerDir.make<TH1F>("em_lateral_1","Lateral Profile;cm;Events",100,50.0,150.0);
66  em_2d_2 = showerDir.make<TH2F>("em_2d_2","Lateral Profile vs. Shower Depth;cm;Events",800,800.0,1600.0,100,50.0,150.0);
67  em_long_2 = showerDir.make<TH1F>("em_long_2","Longitudinal Profile;Radiation Length;Number of Spots",800,800.0,1600.0);
68  em_lateral_2 = showerDir.make<TH1F>("em_lateral_2","Lateral Profile;cm;Events",100,50.0,150.0);
69  em_long_gflash = showerDir.make<TH1F>("em_long_gflash","Longitudinal Profile From GFlash;cm;Number of Spots",800,800.0,1600.0);
70  em_long_sl = showerDir.make<TH1F>("em_long_sl","Longitudinal Profile From Shower Library;cm;Number of Spots",800,800.0,1600.0);
71  } else {
72  fillHisto = false;
73  LogDebug("HFShower") << "HFShowerParam::No file is available for "
74  << "saving histos so the flag is set to false";
75  }
76 #endif
77 
78  G4String attribute = "ReadOutName";
79  G4String value = name;
81  DDValue ddv(attribute,value,0);
83  DDFilteredView fv(cpv);
84  fv.addFilter(filter);
85  bool dodet = fv.firstChild();
86  if (dodet) {
87  DDsvalues_type sv(fv.mergedSpecifics());
88  //Special Geometry parameters
89  gpar = getDDDArray("gparHF",sv);
90  edm::LogInfo("HFShower") << "HFShowerParam: " <<gpar.size() <<" gpar (cm)";
91  for (unsigned int ig=0; ig<gpar.size(); ig++)
92  edm::LogInfo("HFShower") << "HFShowerParam: gpar[" << ig << "] = "
93  << gpar[ig]/cm << " cm";
94  } else {
95  edm::LogError("HFShower") << "HFShowerParam: cannot get filtered "
96  << " view for " << attribute << " matching "
97  << name;
98  throw cms::Exception("Unknown", "HFShowerParam")
99  << "cannot match " << attribute << " to " << name <<"\n";
100  }
101 
102  if (useShowerLibrary) showerLibrary = new HFShowerLibrary(name, cpv, p);
103  if (useGflash) gflash = new HFGflash(p);
104  fibre = new HFFibre(name, cpv, p);
105  attLMeanInv = fibre->attLength(lambdaMean);
106  edm::LogInfo("HFShower") << "att. length used for (lambda=" << lambdaMean
107  << ") = " << 1/(attLMeanInv*cm) << " cm";
108 }
#define LogDebug(id)
T getParameter(std::string const &) const
double attLMeanInv
Definition: HFShowerParam.h:54
T getUntrackedParameter(std::string const &, T const &) const
bool parametrizeLast
Definition: HFShowerParam.h:55
double attLength(double lambda)
Definition: HFFibre.cc:113
std::vector< double > gpar
Definition: HFShowerParam.h:57
HFShowerLibrary * showerLibrary
Definition: HFShowerParam.h:51
TH1F * em_lateral_2
Definition: HFShowerParam.h:59
HFFibre * fibre
Definition: HFShowerParam.h:52
std::vector< std::pair< unsigned int, DDValue > > DDsvalues_type
std::maps an index to a DDValue. The index corresponds to the index assigned to the name of the std::...
Definition: DDsvalues.h:19
bool isAvailable() const
Definition: Service.h:47
HFGflash * gflash
Definition: HFShowerParam.h:53
std::vector< double > getDDDArray(const std::string &, const DDsvalues_type &)
double ref_index
Definition: HFShowerParam.h:54
tuple filter
USE THIS FOR SKIMMED TRACKS process.p = cms.Path(process.hltLevel1GTSeed*process.skimming*process.offlineBeamSpot*process.TrackRefitter2) OTHERWISE USE THIS.
Definition: align_tpl.py:86
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
TH1F * em_long_sl
Definition: HFShowerParam.h:60
TH1F * em_long_gflash
Definition: HFShowerParam.h:60
TH1F * em_long_1
Definition: HFShowerParam.h:59
TH1F * em_long_1_tuned
Definition: HFShowerParam.h:60
TH1F * em_lateral_1
Definition: HFShowerParam.h:59
T * make() const
make new ROOT object
void setCriteria(const DDValue &nameVal, comp_op, log_op l=AND, bool asString=true, bool merged=true)
Definition: DDFilter.cc:285
TH1F * em_long_2
Definition: HFShowerParam.h:59
The DDGenericFilter is a runtime-parametrized Filter looking on DDSpecifcs.
Definition: DDFilter.h:37
HFShowerParam::~HFShowerParam ( )
virtual

Definition at line 110 of file HFShowerParam.cc.

References fibre, gflash, and showerLibrary.

110  {
111  if (fibre) delete fibre;
112  if (gflash) delete gflash;
113  if (showerLibrary) delete showerLibrary;
114 }
HFShowerLibrary * showerLibrary
Definition: HFShowerParam.h:51
HFFibre * fibre
Definition: HFShowerParam.h:52
HFGflash * gflash
Definition: HFShowerParam.h:53

Member Function Documentation

std::vector< double > HFShowerParam::getDDDArray ( const std::string &  str,
const DDsvalues_type sv 
)
private

Definition at line 348 of file HFShowerParam.cc.

References DDfetch(), DDValue::doubles(), edm::hlt::Exception, LogDebug, and relativeConstraints::value.

Referenced by HFShowerParam().

349  {
350 
351 #ifdef DebugLog
352  LogDebug("HFShower") << "HFShowerParam:getDDDArray called for " << str;
353 #endif
354  DDValue value(str);
355  if (DDfetch(&sv,value)) {
356 #ifdef DebugLog
357  LogDebug("HFShower") << value;
358 #endif
359  const std::vector<double> & fvec = value.doubles();
360  int nval = fvec.size();
361  if (nval < 2) {
362  edm::LogError("HFShower") << "HFShowerParam : # of " << str
363  << " bins " << nval << " < 2 ==> illegal";
364  throw cms::Exception("Unknown", "HFShowerParam")
365  << "nval < 2 for array " << str << "\n";
366  }
367 
368  return fvec;
369  } else {
370  edm::LogError("HFShower") << "HFShowerParam : cannot get array " << str;
371  throw cms::Exception("Unknown", "HFShowerParam")
372  << "cannot get array " << str << "\n";
373  }
374 }
#define LogDebug(id)
bool DDfetch(const DDsvalues_type *, DDValue &)
helper for retrieving DDValues from DDsvalues_type *.
Definition: DDsvalues.cc:102
std::vector< HFShowerParam::Hit > HFShowerParam::getHits ( G4Step *  aStep)

Definition at line 129 of file HFShowerParam.cc.

References abs, applyFidCut, attLMeanInv, HFShowerParam::Hit::depth, HFShowerParam::Hit::edep, edMin, em_2d_1, em_2d_2, em_lateral_1, em_lateral_2, em_long_1, em_long_2, em_long_gflash, em_long_sl, emPDG, epPDG, funct::exp(), fibre, fillHisto, gammaPDG, HFShowerLibrary::getHits(), GetVolume(), gflash, HFGflash::gfParameterization(), gpar, hzv, i, convertSQLiteXML::ok, onlyLong, parametrizeLast, path(), pePerGeV, HFFibreFiducial::PMTNumber(), HFShowerParam::Hit::position, position, funct::pow(), ref_index, showerLibrary, mathSSE::sqrt(), HFShowerParam::Hit::time, cond::rpcobgas::time, ExpressReco_HICollisions_FallBack::track, trackEM, HFFibre::tShift(), and HFFibre::zShift().

Referenced by HCalSD::getFromParam().

129  {
130 
131  G4StepPoint * preStepPoint = aStep->GetPreStepPoint();
132  G4Track * track = aStep->GetTrack();
133  G4ThreeVector hitPoint = preStepPoint->GetPosition();
134  G4int particleCode = track->GetDefinition()->GetPDGEncoding();
135  double zv = std::abs(hitPoint.z()) - gpar[4] - 0.5*gpar[1];
136  G4ThreeVector localPoint = G4ThreeVector(hitPoint.x(),hitPoint.y(),zv);
137 
138  double pin = (preStepPoint->GetTotalEnergy())/GeV;
139  double zint = hitPoint.z();
140  double zz = std::abs(zint) - gpar[4];
141 
142 #ifdef DebugLog
143  edm::LogInfo("HFShower") << "HFShowerParam: getHits "
144  << track->GetDefinition()->GetParticleName()
145  << " of energy " << pin << " GeV"
146  << " Pos x,y,z = " << hitPoint.x() << ","
147  << hitPoint.y() << "," << zint << " (" << zz << ","
148  << localPoint.z() << ", "
149  << (localPoint.z()+0.5*gpar[1]) << ") Local "
150  << localPoint;
151 #endif
152  std::vector<HFShowerParam::Hit> hits;
154  hit.position = hitPoint;
155 
156  // look for other charged particles
157  bool other = false;
158  double pBeta = track->GetDynamicParticle()->GetTotalMomentum() / track->GetDynamicParticle()->GetTotalEnergy();
159  if (particleCode != emPDG && particleCode != epPDG && particleCode != gammaPDG ) {
160  if (track->GetDefinition()->GetPDGCharge() != 0 && pBeta > (1/ref_index) &&
161  aStep->GetTotalEnergyDeposit() > 0) other = true;
162  }
163 
164  // take only e+-/gamma/or special particles
165  if (particleCode == emPDG || particleCode == epPDG ||
166  particleCode == gammaPDG || other) {
167  // Leave out the last part
168  double edep = 0.;
169  bool kill = false;
170  if ((!trackEM) && ((zz<(gpar[1]-gpar[2])) || parametrizeLast) && (!other)){
171  edep = pin;
172  kill = true;
173  } else if (track->GetDefinition()->GetPDGCharge() != 0 &&
174  pBeta > (1/ref_index)) {
175  edep = (aStep->GetTotalEnergyDeposit())/GeV;
176  }
177  std::string path = "ShowerLibrary";
178 #ifdef DebugLog
179  edm::LogInfo("HFShower") << "HFShowerParam: getHits edep = " << edep
180  << ", Kill = " << kill << ", pin = " << pin
181  << ", edMin = " << edMin << " Other " << other;
182 #endif
183  if (edep > 0) {
184  if ((showerLibrary || gflash) && kill && pin > edMin && (!other)) {
185  if (showerLibrary) {
186  std::vector<HFShowerLibrary::Hit> hitSL = showerLibrary->getHits(aStep,kill, onlyLong);
187  for (unsigned int i=0; i<hitSL.size(); i++) {
188  bool ok = true;
189  if (applyFidCut) {
190  int npmt = HFFibreFiducial:: PMTNumber(hitSL[i].position);
191  if (npmt <= 0) ok = false;
192  }
193  if (ok) {
194  hit.position = hitSL[i].position;
195  hit.depth = hitSL[i].depth;
196  hit.time = hitSL[i].time;
197  hit.edep = 1;
198  hits.push_back(hit);
199 #ifdef DebugLog
200  if (fillHisto) {
201  hzv->Fill(zv);
202  em_long_sl->Fill(hit.position.z()/cm);
203  if (hit.depth == 1) {
204  em_2d_1->Fill(hit.position.z()/cm, sqrt(pow(hit.position.x()/cm,2)+pow(hit.position.y()/cm,2)));
205  em_lateral_1->Fill(sqrt(pow(hit.position.x()/cm,2)+pow(hit.position.y()/cm,2)));
206  em_long_1->Fill(hit.position.z()/cm);
207  } else if (hit.depth == 2) {
208  em_2d_2->Fill(hit.position.z()/cm, sqrt(pow(hit.position.x()/cm,2)+pow(hit.position.y()/cm,2)));
209  em_lateral_2->Fill(sqrt(pow(hit.position.x()/cm,2)+pow(hit.position.y()/cm,2)));
210  em_long_2->Fill(hit.position.z()/cm);
211  }
212  }
213 
214  edm::LogInfo("HFShower") << "HFShowerParam: Hit at depth "
215  << hit.depth << " with edep " << hit.edep
216  << " Time " << hit.time;
217 #endif
218  }
219  }
220  } else {
221  std::vector<HFGflash::Hit> hitSL = gflash->gfParameterization(aStep,kill, onlyLong);
222  for (unsigned int i=0; i<hitSL.size(); i++) {
223  bool ok = true;
224  G4ThreeVector pe_effect(hitSL[i].position.x(), hitSL[i].position.y(), hitSL[i].position.z());
225  double zv = std::abs(pe_effect.z()) - gpar[4];
226  //depth
227  int depth = 1;
228  int npmt = 0;
229  if (zv < 0 ) ok = false;
230  if (zv > gpar[1]) ok = false;
231  if (applyFidCut) {
232  npmt = HFFibreFiducial:: PMTNumber(pe_effect);
233  if (npmt <= 0) ok = false;
234  else if (npmt > 24) { // a short fibre
235  if (zv > gpar[0]) depth = 2;
236  else ok = false;
237  }
238 #ifdef DebugLog
239  edm::LogInfo("HFShower") << "HFShowerParam: npmt " << npmt
240  << " zv " << std::abs(pe_effect.z())
241  << ":" << gpar[4] << ":" << zv << ":"
242  << gpar[0] << " ok " << ok << " depth "
243  << depth;
244 #endif
245  } else {
246  if (G4UniformRand() > 0.5) depth = 2;
247  if (depth == 2 && zv < gpar[0]) ok = false;
248  }
249  //attenuation
250  double dist = fibre->zShift(localPoint,depth,0); // distance to PMT
251  double r1 = G4UniformRand();
252 #ifdef DebugLog
253  edm::LogInfo("HFShower") << "HFShowerParam:Distance to PMT (" <<npmt
254  << ") " << dist << ", exclusion flag "
255  << (r1 > exp(-attLMeanInv*zv));
256 #endif
257  if (r1 > exp(-attLMeanInv*dist)) ok = false;
258  if (ok) {
259  double time = fibre->tShift(localPoint,depth,0); //remaining part
260 
261  hit.position = hitSL[i].position;
262  hit.depth = depth;
263  hit.time = time + hitSL[i].time;
264  hit.edep = 1;
265  hits.push_back(hit);
266 #ifdef DebugLog
267  if (fillHisto) {
268  em_long_gflash->Fill(pe_effect.z()/cm, hitSL[i].edep);
269  hzv->Fill(zv);
270  if (hit.depth == 1) {
271  em_2d_1->Fill(hit.position.z()/cm, sqrt(pow(hit.position.x()/cm,2)+pow(hit.position.y()/cm,2)));
272  em_lateral_1->Fill(sqrt(pow(hit.position.x()/cm,2)+pow(hit.position.y()/cm,2)));
273  em_long_1->Fill(hit.position.z()/cm);
274  } else if (hit.depth == 2) {
275  em_2d_2->Fill(hit.position.z()/cm, sqrt(pow(hit.position.x()/cm,2)+pow(hit.position.y()/cm,2)));
276  em_lateral_2->Fill(sqrt(pow(hit.position.x()/cm,2)+pow(hit.position.y()/cm,2)));
277  em_long_2->Fill(hit.position.z()/cm);
278  }
279  }
280 
281  edm::LogInfo("HFShower") << "HFShowerParam: Hit at depth "
282  << hit.depth << " with edep "
283  << hit.edep << " Time " << hit.time;
284 #endif
285  }
286  }
287  }
288  } else {
289  path = "Rest";
290  edep *= pePerGeV;
291  double tSlice = (aStep->GetPostStepPoint()->GetGlobalTime());
292  double time = fibre->tShift(localPoint,1,0); // remaining part
293  hit.depth = 1;
294  hit.time = tSlice+time;
295  hit.edep = edep;
296  hits.push_back(hit);
297 #ifdef DebugLog
298  edm::LogInfo("HFShower") << "HFShowerParam: Hit at depth 1 with edep "
299  << edep << " Time " << tSlice << ":" << time
300  << ":" << hit.time;
301 #endif
302  if (zz >= gpar[0]) {
303  time = fibre->tShift(localPoint,2,0);
304  hit.depth = 2;
305  hit.time = tSlice+time;
306  hits.push_back(hit);
307 #ifdef DebugLog
308  edm::LogInfo("HFShower") <<"HFShowerParam: Hit at depth 2 with edep "
309  << edep << " Time " << tSlice << ":" << time
310  << hit.time;
311 #endif
312  }
313  }
314 #ifdef DebugLog
315  for (unsigned int ii=0; ii<hits.size(); ii++) {
316  double zv = std::abs(hits[ii].position.z());
317  if (zv > 12790)
318  edm::LogInfo("HFShower") << "HFShowerParam: Abnormal hit along "
319  << path << " in "
320  << preStepPoint->GetPhysicalVolume()->GetLogicalVolume()->GetName()
321  << " at " << hits[ii].position << " zz "
322  << zv << " Edep " << edep << " due to "
323  << track->GetDefinition()->GetParticleName()
324  << " time " << hit.time;
325  }
326 #endif
327  if (kill) {
328  track->SetTrackStatus(fStopAndKill);
329  G4TrackVector tv = *(aStep->GetSecondary());
330  for (unsigned int kk=0; kk<tv.size(); kk++) {
331  if (tv[kk]->GetVolume() == preStepPoint->GetPhysicalVolume())
332  tv[kk]->SetTrackStatus(fStopAndKill);
333  }
334  }
335 #ifdef DebugLog
336  edm::LogInfo("HFShower") << "HFShowerParam: getHits kill (" << kill
337  << ") track " << track->GetTrackID()
338  << " at " << hitPoint
339  << " and deposit " << edep << " " << hits.size()
340  << " times" << " ZZ " << zz << " " << gpar[0];
341 #endif
342  }
343  }
344 
345  return hits;
346 }
std::vector< Hit > gfParameterization(G4Step *aStep, bool &ok, bool onlyLong=false)
Definition: HFGflash.cc:88
double attLMeanInv
Definition: HFShowerParam.h:54
int i
Definition: DBlmapReader.cc:9
bool parametrizeLast
Definition: HFShowerParam.h:55
std::vector< Hit > getHits(G4Step *aStep, bool &ok, bool onlyLong=false)
static int PMTNumber(G4ThreeVector pe_effect)
std::vector< double > gpar
Definition: HFShowerParam.h:57
#define abs(x)
Definition: mlp_lapack.h:159
Exp< T >::type exp(const T &t)
Definition: Exp.h:22
HFShowerLibrary * showerLibrary
Definition: HFShowerParam.h:51
TH1F * em_lateral_2
Definition: HFShowerParam.h:59
HFFibre * fibre
Definition: HFShowerParam.h:52
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
double zShift(G4ThreeVector point, int depth, int fromEndAbs=0)
Definition: HFFibre.cc:143
int path() const
Definition: HLTadd.h:3
T sqrt(T t)
Definition: SSEVec.h:28
double tShift(G4ThreeVector point, int depth, int fromEndAbs=0)
Definition: HFFibre.cc:131
HFGflash * gflash
Definition: HFShowerParam.h:53
G4ThreeVector position
Definition: HFShowerParam.h:38
static const G4LogicalVolume * GetVolume(const std::string &name)
double ref_index
Definition: HFShowerParam.h:54
TH1F * em_long_sl
Definition: HFShowerParam.h:60
TH1F * em_long_gflash
Definition: HFShowerParam.h:60
TH1F * em_long_1
Definition: HFShowerParam.h:59
TH1F * em_lateral_1
Definition: HFShowerParam.h:59
TH1F * em_long_2
Definition: HFShowerParam.h:59
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
void HFShowerParam::initRun ( G4ParticleTable *  theParticleTable)

Definition at line 116 of file HFShowerParam.cc.

References emPDG, epPDG, gammaPDG, HFShowerLibrary::initRun(), and showerLibrary.

Referenced by HCalSD::initRun().

116  {
117 
118  emPDG = theParticleTable->FindParticle("e-")->GetPDGEncoding();
119  epPDG = theParticleTable->FindParticle("e+")->GetPDGEncoding();
120  gammaPDG = theParticleTable->FindParticle("gamma")->GetPDGEncoding();
121 #ifdef DebugLog
122  edm::LogInfo("HFShower") << "HFShowerParam: Particle code for e- = " << emPDG
123  << " for e+ = " << epPDG << " for gamma = "
124  << gammaPDG;
125 #endif
126  if (showerLibrary) showerLibrary->initRun(theParticleTable);
127 }
HFShowerLibrary * showerLibrary
Definition: HFShowerParam.h:51
void initRun(G4ParticleTable *theParticleTable)

Member Data Documentation

bool HFShowerParam::applyFidCut
private

Definition at line 55 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

double HFShowerParam::attLMeanInv
private

Definition at line 54 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

double HFShowerParam::edMin
private

Definition at line 54 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

TH2F* HFShowerParam::em_2d_1
private

Definition at line 61 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

TH2F * HFShowerParam::em_2d_2
private

Definition at line 61 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

TH1F * HFShowerParam::em_lateral_1
private

Definition at line 59 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

TH1F * HFShowerParam::em_lateral_2
private

Definition at line 59 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

TH1F* HFShowerParam::em_long_1
private

Definition at line 59 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

TH1F * HFShowerParam::em_long_1_tuned
private

Definition at line 60 of file HFShowerParam.h.

Referenced by HFShowerParam().

TH1F * HFShowerParam::em_long_2
private

Definition at line 59 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

TH1F * HFShowerParam::em_long_gflash
private

Definition at line 60 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

TH1F * HFShowerParam::em_long_sl
private

Definition at line 60 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

G4int HFShowerParam::emPDG
private

Definition at line 56 of file HFShowerParam.h.

Referenced by getHits(), and initRun().

G4int HFShowerParam::epPDG
private

Definition at line 56 of file HFShowerParam.h.

Referenced by getHits(), and initRun().

HFFibre* HFShowerParam::fibre
private

Definition at line 52 of file HFShowerParam.h.

Referenced by getHits(), HFShowerParam(), and ~HFShowerParam().

bool HFShowerParam::fillHisto
private

Definition at line 58 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

G4int HFShowerParam::gammaPDG
private

Definition at line 56 of file HFShowerParam.h.

Referenced by getHits(), and initRun().

HFGflash* HFShowerParam::gflash
private

Definition at line 53 of file HFShowerParam.h.

Referenced by getHits(), HFShowerParam(), and ~HFShowerParam().

std::vector<double> HFShowerParam::gpar
private

Definition at line 57 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

TH1F* HFShowerParam::hzv
private

Definition at line 60 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

bool HFShowerParam::onlyLong
private

Definition at line 55 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

bool HFShowerParam::parametrizeLast
private

Definition at line 55 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

double HFShowerParam::pePerGeV
private

Definition at line 54 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

double HFShowerParam::ref_index
private

Definition at line 54 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().

HFShowerLibrary* HFShowerParam::showerLibrary
private

Definition at line 51 of file HFShowerParam.h.

Referenced by getHits(), HFShowerParam(), initRun(), and ~HFShowerParam().

bool HFShowerParam::trackEM
private

Definition at line 55 of file HFShowerParam.h.

Referenced by getHits(), and HFShowerParam().