53 #include "G4SDManager.hh"
56 #include "G4ThreeVector.hh"
57 #include "G4VProcess.hh"
58 #include "G4HCofThisEvent.hh"
60 #include <CLHEP/Random/RandGaussQ.h>
61 #include <CLHEP/Random/Randomize.h>
62 #include <CLHEP/Units/GlobalSystemOfUnits.h>
63 #include <CLHEP/Units/GlobalPhysicalConstants.h>
70 class HepRandomEngine;
75 public Observer<const BeginOfEvent*>,
164 double beamEta = (fMaxEta + fMinEta) / 2.;
165 double beamPhi = (fMaxPhi + fMinPhi) / 2.;
166 double beamThet = 2 * atan(
exp(-beamEta));
169 iceta = (int)(beamEta / 0.087) + 1;
170 icphi = (int)(fabs(beamPhi) / 0.087) + 5;
174 produces<PHcalTB04Info>();
177 beamline_RM->rotateZ(-beamPhi);
178 beamline_RM->rotateY(-beamThet);
181 <<
"HcalTB04:: Initialised as observer of BeginOf Job/BeginOfRun/BeginOfEvent/G4Step/EndOfEvent with Parameter "
182 "values:\n \thcalOnly = "
183 << hcalOnly <<
"\tecalNoise = " << ecalNoise <<
"\n\tMode = " << mode <<
" (0: HB2 Standard; 1:HB2 Segmented)"
184 <<
"\tType = " << type <<
" (0: HB; 1 HE; 2 HB+HE)\n\tbeamOffset = " << beamOffset <<
"\ticeta = " <<
iceta
195 edm::LogVerbatim(
"HcalTBSim") <<
"\n --------> Total number of selected entries : " <<
count <<
"\nPointers:: QIE "
238 for (
int lay = 1; lay < 8; lay++) {
239 for (
int icr = 1; icr < 8; icr++) {
262 for (
int i = 0;
i < 5;
i++) {
266 for (
int i = 0;
i < 3;
i++) {
270 for (
int i = 0;
i < 20;
i++) {
282 int irun = (*run)()->GetRunID();
285 G4SDManager*
sd = G4SDManager::GetSDMpointerIfExist();
288 G4VSensitiveDetector* aSD = sd->FindSensitiveDetector(sdname);
289 if (aSD ==
nullptr) {
291 <<
" with name " << sdname <<
" in this "
295 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis::beginOfRun: Finds SD with name " << theCaloSD->GetName()
299 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis::beginOfRun: set a new numbering scheme";
303 aSD = sd->FindSensitiveDetector(sdname);
304 if (aSD ==
nullptr) {
306 <<
" with name " << sdname <<
" in this "
310 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis::beginOfRun: Finds SD with name " << theCaloSD->GetName()
314 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis::beginOfRun: set a new numbering scheme";
319 <<
"not get SD Manager!";
326 evNum = (*evt)()->GetEventID();
332 if (aStep !=
nullptr) {
334 G4ThreeVector thePreStepPoint = aStep->GetPreStepPoint()->GetPosition();
335 G4ThreeVector thePostStepPoint;
338 G4Track* aTrack = aStep->GetTrack();
339 int trackID = aTrack->GetTrackID();
340 int parentID = aTrack->GetParentID();
341 const G4ThreeVector&
position = aTrack->GetPosition();
342 G4ThreeVector momentum = aTrack->GetMomentum();
343 G4String partType = aTrack->GetDefinition()->GetParticleType();
344 G4String partSubType = aTrack->GetDefinition()->GetParticleSubType();
345 int partPDGEncoding = aTrack->GetDefinition()->GetPDGEncoding();
347 bool isPDGStable = aTrack->GetDefinition()->GetPDGStable();
349 double pDGlifetime = aTrack->GetDefinition()->GetPDGLifeTime();
350 double gammaFactor = aStep->GetPreStepPoint()->GetGamma();
353 double stepDeltaEnergy = aStep->GetDeltaEnergy();
354 double kinEnergy = aTrack->GetKineticEnergy();
357 if (trackID == 1 && parentID == 0 && ((kinEnergy == 0.) || (fabs(stepDeltaEnergy / kinEnergy) > 0.1))) {
359 if (kinEnergy == 0.) {
362 if (fabs(stepDeltaEnergy / kinEnergy) > 0.1)
372 G4String thePostPVname =
"NoName";
373 G4StepPoint* thePostPoint = aStep->GetPostStepPoint();
375 thePostStepPoint = thePostPoint->GetPosition();
376 G4VPhysicalVolume* thePostPV = thePostPoint->GetPhysicalVolume();
378 thePostPVname = thePostPV->GetName();
381 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: V1 found at: " << thePostStepPoint
382 <<
" G4VPhysicalVolume: " << thePostPVname;
389 if ((trackID != 1 && parentID == 1 && (aTrack->GetCurrentStepNumber() == 1) && (thePreStepPoint ==
pvPosition)) ||
390 (trackID == 1 && thePreStepPoint ==
pvPosition)) {
392 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis::A secondary... PDG:" << partPDGEncoding
393 <<
" TrackID:" << trackID <<
" ParentID:" << parentID
394 <<
" stable: " << isPDGStable <<
" Tau: " << pDGlifetime
395 <<
" cTauGamma=" << c_light * pDGlifetime * gammaFactor * 1000.
396 <<
"um GammaFactor: " << gammaFactor;
401 secEkin.push_back(aTrack->GetKineticEnergy());
404 double ctaugamma_um = CLHEP::c_light * pDGlifetime * gammaFactor * 1000.;
405 if ((ctaugamma_um > 0.) && (ctaugamma_um < 100.)) {
413 if (aTrack->GetCurrentStepNumber() == 1) {
418 std::vector<int>::iterator pos;
419 for (pos = pos1; pos != pos2; pos++) {
424 <<
"HcalTB04Analysis:: A tertiary... PDG:" << partPDGEncoding <<
" TrackID:" << trackID
425 <<
" ParentID:" << parentID <<
" stable: " << isPDGStable <<
" Tau: " << pDGlifetime
426 <<
" cTauGamma=" << c_light * pDGlifetime * gammaFactor * 1000. <<
"um GammaFactor: " << gammaFactor;
441 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis::Fill event " << (*evt)()->GetEventID();
449 CLHEP::HepRandomEngine* engine = G4Random::getTheEngine();
466 int iEvt = (*evt)()->GetEventID();
469 else if ((iEvt < 100) && (iEvt % 10 == 0))
471 else if ((iEvt < 1000) && (iEvt % 100 == 0))
473 else if ((iEvt < 10000) && (iEvt % 1000 == 0))
478 std::vector<CaloHit> hhits, hhitl;
481 std::map<int, float, std::less<int> > primaries;
482 double etot1 = 0, etot2 = 0;
485 G4HCofThisEvent* allHC = (*evt)()->GetHCofThisEvent();
487 idHC = G4SDManager::GetSDMpointer()->GetCollectionID(sdName);
490 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Hit Collection for " << sdName <<
" of ID " << idHC
491 <<
" is obtained at " << theHC <<
" with " << theHC->entries() <<
" entries";
493 int thehc_entries = theHC->entries();
494 if (idHC >= 0 && theHC !=
nullptr) {
495 hhits.reserve(theHC->entries());
496 hhitl.reserve(theHC->entries());
497 for (j = 0; j < thehc_entries; j++) {
503 double theta = pos.theta();
505 double phi = pos.phi();
513 double escl = e *
scale(det, layer);
515 CaloHit hit(det, layer, escl, eta, phi, jitter, idx);
516 hhits.push_back(hit);
517 CaloHit hitl(det, layer, escl, eta, phi, jitter,
id);
518 hhitl.push_back(hitl);
522 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Hcal Hit i/p " << j <<
" ID 0x" << std::hex <<
id <<
" 0x"
523 << idx <<
std::dec <<
" time " << std::setw(6) << time <<
" " << std::setw(6)
524 << jitter <<
" theta " << std::setw(8) << theta <<
" eta " << std::setw(8) << eta
525 <<
" phi " << std::setw(8) << phi <<
" e " << std::setw(8) << e <<
" "
526 << std::setw(8) << escl;
532 std::vector<CaloHit>::iterator itr;
533 int nHit = hhits.size();
534 std::vector<CaloHit*> hits(nHit);
535 for (j = 0, itr = hhits.begin(); itr != hhits.end(); j++, itr++) {
539 std::vector<CaloHit*>::iterator k1,
k2;
541 for (k1 = hits.begin(); k1 != hits.end(); k1++) {
542 int det = (**k1).det();
543 int layer = (**k1).layer();
544 double ehit = (**k1).e();
545 double eta = (**k1).eta();
546 double phi = (**k1).phi();
547 double jitter = (**k1).t();
548 uint32_t
unitID = (**k1).id();
550 for (k2 = k1 + 1; k2 != hits.end() && fabs(jitter - (**k2).t()) < 1 && unitID == (**k2).id(); k2++) {
555 CaloHit hit(det, layer, ehit, eta, phi, jitter, unitID);
560 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Hcal Hit store " << nhit <<
" ID 0x" << std::hex << unitID
561 <<
std::dec <<
" time " << std::setw(6) << jitter <<
" eta " << std::setw(8) << eta
562 <<
" phi " << std::setw(8) << phi <<
" e " << std::setw(8) << ehit;
566 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Stores " << nhit <<
" HCal hits from " << nHit
567 <<
" input hits E(Hcal) " << etot1 <<
" " << etot2;
570 for (j = 0, itr = hhitl.begin(); itr != hhitl.end(); j++, itr++) {
576 for (k1 = hits.begin(); k1 != hits.end(); k1++) {
577 int det = (**k1).det();
578 int layer = (**k1).layer();
579 double ehit = (**k1).e();
580 double eta = (**k1).eta();
581 double phi = (**k1).phi();
582 double jitter = (**k1).t();
583 uint32_t
unitID = (**k1).id();
585 for (k2 = k1 + 1; k2 != hits.end() && fabs(jitter - (**k2).t()) < 1 && unitID == (**k2).id(); k2++) {
590 CaloHit hit(det, layer, ehit, eta, phi, jitter, unitID);
595 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Hcal Hit store " << nhitl <<
" ID 0x" << std::hex << unitID
596 <<
std::dec <<
" time " << std::setw(6) << jitter <<
" eta " << std::setw(8) << eta
597 <<
" phi " << std::setw(8) << phi <<
" e " << std::setw(8) << ehit;
601 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Stores " << nhitl <<
" HCal hits from " << nHit
602 <<
" input hits E(Hcal) " << etot1 <<
" " << etotl;
605 std::vector<CaloHit> ehits;
607 idHC = G4SDManager::GetSDMpointer()->GetCollectionID(sdName);
611 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Hit Collection for " << sdName <<
" of ID " << idHC
612 <<
" is obtained at " << theHC <<
" with " << theHC->entries() <<
" entries";
614 if (idHC >= 0 && theHC !=
nullptr) {
615 thehc_entries = theHC->entries();
616 ehits.reserve(theHC->entries());
617 for (j = 0; j < thehc_entries; j++) {
621 if (e < 0 || e > 100000.)
626 double theta = pos.theta();
628 double phi = pos.phi();
632 ehits.push_back(hit);
636 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Ecal Hit i/p " << j <<
" ID 0x" << std::hex <<
id
637 <<
std::dec <<
" time " << std::setw(6) << time <<
" theta " << std::setw(8)
638 << theta <<
" eta " << std::setw(8) << eta <<
" phi " << std::setw(8) << phi
639 <<
" e " << std::setw(8) <<
e;
647 std::vector<CaloHit*> hite(nHit);
648 for (j = 0, itr = ehits.begin(); itr != ehits.end(); j++, itr++) {
653 for (k1 = hite.begin(); k1 != hite.end(); k1++) {
654 int det = (**k1).det();
655 int layer = (**k1).layer();
656 double ehit = (**k1).e();
657 double eta = (**k1).eta();
658 double phi = (**k1).phi();
659 double jitter = (**k1).t();
660 uint32_t
unitID = (**k1).id();
662 for (k2 = k1 + 1; k2 != hite.end() && fabs(jitter - (**k2).t()) < 1 && unitID == (**k2).id(); k2++) {
667 CaloHit hit(det, layer, ehit, eta, phi, jitter, unitID);
672 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Ecal Hit store " << nhit <<
" ID 0x" << std::hex << unitID
673 <<
std::dec <<
" time " << std::setw(6) << jitter <<
" eta " << std::setw(8) << eta
674 <<
" phi " << std::setw(8) << phi <<
" e " << std::setw(8) << ehit;
678 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Stores " << nhit <<
" ECal hits from " << nHit
679 <<
" input hits E(Ecal) " << etot1 <<
" " << etot2;
684 G4PrimaryParticle* thePrim =
nullptr;
685 int nvertex = (*evt)()->GetNumberOfPrimaryVertex();
687 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Event has " << nvertex <<
" verteices";
690 edm::LogWarning(
"HcalTBSim") <<
"HcalTB04Analysis::EndOfEvent ERROR: no vertex found for event " <<
evNum;
691 for (
int i = 0;
i < nvertex;
i++) {
692 G4PrimaryVertex* avertex = (*evt)()->GetPrimaryVertex(
i);
693 if (avertex ==
nullptr) {
694 edm::LogWarning(
"HcalTBSim") <<
"HcalTB04Analysis::EndOfEvent ERR: pointer to vertex = 0 for event " <<
evNum;
696 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis::Vertex number :" <<
i <<
" " << avertex->GetPosition();
697 int npart = avertex->GetNumberOfParticle();
699 edm::LogWarning(
"HcalTBSim") <<
"HcalTB04Analysis::End Of Event ERR: no primary!";
700 if (thePrim ==
nullptr)
701 thePrim = avertex->GetPrimary(trackID);
705 if (thePrim !=
nullptr) {
706 double px = thePrim->GetPx();
707 double py = thePrim->GetPy();
708 double pz = thePrim->GetPz();
712 edm::LogWarning(
"HcalTBSim") <<
"HcalTB04Analysis:: EndOfEvent ERR: primary has p=0 ";
714 double costheta = pz /
p;
717 if (px != 0 || py != 0)
722 edm::LogWarning(
"HcalTBSim") <<
"HcalTB04Analysis::EndOfEvent ERR: could not find primary";
729 std::vector<CaloHit> hits(hittot);
730 std::vector<int> todo(
nTower, 0);
733 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis::qieAnalysis: Size " << hits.size() <<
" " << todo.size() <<
" "
737 for (
unsigned int k1 = 0; k1 <
hcalHitCache.size(); k1++) {
739 uint32_t
id = hit.
id();
741 double esim = hit.
e();
745 if (hit.
id() ==
id) {
757 <<
" energy from " << nhit <<
" hits starting with hit # " << k1
758 <<
" energy with noise " << eq;
778 <<
" registers " <<
esimh[
k2] <<
" energy from hits and energy after QIE analysis "
786 CLHEP::RandGaussQ randGauss(*engine);
791 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis::xtalAnalysis: Size " << iok.size() <<
" " <<
idEcal.size() <<
" "
794 for (
unsigned int k1 = 0; k1 <
ecalHitCache.size(); k1++) {
806 double eq = esim + randGauss.fire(0.,
ecalNoise);
809 <<
" energy from " << nhit <<
" hits starting with hit # " << k1
810 <<
" energy with noise " << eq;
828 <<
" registers " <<
esime[
k2] <<
" energy from hits and energy from noise "
852 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Energy deposit at Sim Level (Total) " <<
etots <<
" (ECal) "
853 <<
eecals <<
" (HCal) " << ehcals
854 <<
"\nHcalTB04Analysis:: Energy deposit at Qie Level (Total) " <<
etotq <<
" (ECal) "
860 for (
int i = 0;
i < 5;
i++) {
864 for (
int i = 0;
i < 3;
i++) {
868 double e1 = 0, e2 = 0;
881 ieta = ieta -
iceta + 2;
883 if (iphi >= 0 && iphi < 3 && ieta >= 0 && ieta < 5) {
892 for (
int i = 0;
i < 3;
i++) {
898 for (
int i = 0;
i < 5;
i++) {
905 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Energy fraction along Eta and Phi (Sim/Qie)";
906 for (
int i = 0;
i < 5;
i++)
913 for (
int i = 0;
i < 20;
i++) {
925 if (iphi >= 0 && iphi < 3 && layer >= 0 && layer < 20) {
932 for (
int i = 0;
i < 20;
i++) {
939 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Energy fraction along Layer";
940 for (
int i = 0;
i < 20;
i++)
968 std::vector<CaloHit>::iterator itr;
970 uint32_t
id = itr->id();
971 int det,
z,
group, ieta, iphi, lay;
973 product.
saveHit(det, lay, ieta, iphi, itr->e(), itr->t());
976 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Save Hit " << std::setw(3) << i + 1 <<
" ID 0x" << std::hex
977 << group <<
std::dec <<
" " << std::setw(2) << det <<
" " << std::setw(2) << lay
978 <<
" " << std::setw(1) << z <<
" " << std::setw(3) << ieta <<
" " << std::setw(3)
979 << iphi <<
" T " << std::setw(6) << itr->t() <<
" E " << std::setw(6) << itr->e();
982 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Saves " << nhit <<
" hits from Crystals";
987 uint32_t
id = itr->
id();
988 int det,
z,
group, ieta, iphi, lay;
990 product.
saveHit(det, lay, ieta, iphi, itr->e(), itr->t());
993 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Save Hit " << std::setw(3) << i + 1 <<
" ID 0x" << std::hex
994 << group <<
std::dec <<
" " << std::setw(2) << det <<
" " << std::setw(2) << lay
995 <<
" " << std::setw(1) << z <<
" " << std::setw(3) << ieta <<
" " << std::setw(3)
996 << iphi <<
" T " << std::setw(6) << itr->t() <<
" E " << std::setw(6) << itr->e();
999 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis:: Saves " << nhit <<
" hits from HCal";
1013 for (
unsigned int i = 0; i <
secTrackID.size(); i++) {
1024 pvUVW = G4ThreeVector();
1042 esimh.push_back(0.);
1050 esime.push_back(0.);
1051 enois.push_back(0.);
1056 int det,
z,
group, ieta, iphi, lay;
1058 group = (det & 15) << 20;
1059 group += ((lay - 1) & 31) << 15;
1060 group += (z & 1) << 14;
1061 group += (ieta & 127) << 7;
1062 group += (iphi & 127);
1071 else if (layer == 17)
1073 else if (layer > 17)
1083 double theta = 2.0 * atan(
exp(-eta));
1086 const double rLay[19] = {1836.0,
1105 if (layer > 0 && layer <= 19)
1106 dist += rLay[layer - 1] * mm /
sin(theta);
1108 const double zLay[19] = {4034.0,
1127 if (layer > 0 && layer <= 19)
1128 dist += zLay[layer - 1] * mm /
cos(theta);
1131 double tmp = dist / c_light / ns;
1133 edm::LogVerbatim(
"HcalTBSim") <<
"HcalTB04Analysis::timeOfFlight " << tmp <<
" for det/lay " << det <<
" " << layer
1134 <<
" eta/theta " << eta <<
" " << theta / deg <<
" dist " << dist;
Log< level::Info, true > LogVerbatim
#define DEFINE_SIMWATCHER(type)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
static std::vector< std::string > checklist log
std::vector< double > secEkin
void setLongProf(const std::vector< double > &es, const std::vector< double > &eq)
uint16_t *__restrict__ id
std::vector< int > idHcal
void fillPrimary(double energy, double eta, double phi)
std::vector< CaloHit > hcalHitLayer
std::vector< double > eqeta
std::vector< double > eqie
void fillTrnsProf(const std::vector< double > &es1, const std::vector< double > &eq1, const std::vector< double > &es2, const std::vector< double > &eq2)
Sin< T >::type sin(const T &t)
void fillBuffer(const EndOfEvent *evt)
std::vector< int > shortLivedSecondaries
Geom::Theta< T > theta() const
std::vector< int > secTrackID
std::vector< double > eqphi
void setPrimary(int primary, int id, double energy, double eta, double phi)
Exp< T >::type exp(const T &t)
void setNumberingScheme(HcalNumberingScheme *)
void update(const BeginOfRun *run) override
This routine will be called when the appropriate signal arrives.
void setEdep(double simtot, double sime, double simh, double digtot, double dige, double digh)
void setTrnsProf(const std::vector< double > &es1, const std::vector< double > &eq1, const std::vector< double > &es2, const std::vector< double > &eq2)
constexpr std::array< uint8_t, layerIndexSize > layer
void saveHit(int det, int lay, int eta, int phi, double e, double t)
std::vector< int > secPartID
static uint32_t packHcalIndex(int det, int z, int depth, int eta, int phi, int lay)
std::vector< uint32_t > idEcal
std::vector< double > eseta
void setIDs(const std::vector< int > &, const std::vector< int > &)
void setVtxSec(int id, int pdg, double px, double py, double pz, double ek)
void setEdepHcal(const std::vector< double > &esim, const std::vector< double > &edig)
double getEnergy(const std::vector< int > &)
Cos< T >::type cos(const T &t)
Tan< T >::type tan(const T &t)
static void unpackHcalIndex(const uint32_t &idx, int &det, int &z, int &depth, int &eta, int &phi, int &lay)
G4RotationMatrix * beamline_RM
std::vector< double > esime
static std::vector< uint32_t > getUnitIDs(const int type, const int mode)
double scale(int det, int layer)
std::vector< double > esphi
double timeOfFlight(int det, int layer, double eta)
std::vector< CaloHit > hcalHitCache
void xtalAnalysis(CLHEP::HepRandomEngine *)
static uint32_t getUnitID(const uint32_t id, const int mode)
HcalTB04Analysis(const edm::ParameterSet &p)
~HcalTB04Analysis() override
XYZPointD XYZPoint
point in space with cartesian internal representation
std::vector< int > idXtal
std::vector< CaloHit > ecalHitCache
T getParameter(std::string const &) const
std::vector< double > enois
void setVtxPrim(int evNum, int type, double x, double y, double z, double u, double v, double w, double px, double py, double pz)
std::vector< G4ThreeVector > secMomentum
std::vector< int > getCode(int, const std::vector< CaloHit > &, CLHEP::HepRandomEngine *)
G4THitsCollection< CaloG4Hit > CaloG4HitCollection
static int position[264][3]
double getTimeSlice() const
std::vector< uint32_t > idTower
void qieAnalysis(CLHEP::HepRandomEngine *)
std::vector< double > eslay
math::XYZPoint getEntry() const
std::vector< double > eqlay
uint32_t getUnitID() const
Log< level::Warning, false > LogWarning
void setNumberingScheme(EcalNumberingScheme *)
std::vector< std::string > names
Power< A, B >::type pow(const A &a, const B &b)
void fillEdep(double etots, double eecals, double ehcals, double etotq, double eecalq, double ehcalq)
void fillEvent(PHcalTB04Info &)
const HcalTB04Analysis & operator=(const HcalTB04Analysis &)=delete
double getEnergyDeposit() const
std::vector< double > esimh
void fillLongProf(const std::vector< double > &es, const std::vector< double > &eq)
void produce(edm::Event &, const edm::EventSetup &) override