#include <CalorimetryManager.h>
Public Member Functions | |
CalorimetryManager () | |
CalorimetryManager (FSimEvent *aSimEvent, const edm::ParameterSet &fastCalo, const edm::ParameterSet &MuonECALPars, const edm::ParameterSet &MuonHCALPars, const edm::ParameterSet &fastGflash, const RandomEngine *engine) | |
CaloGeometryHelper * | getCalorimeter () const |
void | loadFromEcalBarrel (edm::PCaloHitContainer &c) const |
void | loadFromEcalEndcap (edm::PCaloHitContainer &c) const |
void | loadFromHcal (edm::PCaloHitContainer &c) const |
void | loadFromPreshower (edm::PCaloHitContainer &c) const |
void | loadMuonSimTracks (edm::SimTrackContainer &m) const |
void | reconstruct () |
~CalorimetryManager () | |
Private Member Functions | |
void | clean () |
void | EMShowerSimulation (const FSimTrack &myTrack) |
void | HDShowerSimulation (const FSimTrack &myTrack) |
Hadronic Shower Simulation. | |
void | MuonMipSimulation (const FSimTrack &myTrack) |
void | readParameters (const edm::ParameterSet &fastCalo) |
void | reconstructECAL (const FSimTrack &track) |
void | reconstructHCAL (const FSimTrack &myTrack) |
void | respCorr (double) |
void | updateMap (uint32_t cellid, float energy, int id, std::map< uint32_t, std::vector< std::pair< int, float > > > &mymap) |
void | updateMap (int hi, float energy, int id, std::vector< std::vector< std::pair< int, float > > > &mymap, std::vector< int > &firedCells) |
Private Attributes | |
GammaFunctionGenerator * | aGammaGenerator |
const LandauFluctuationGenerator * | aLandauGenerator |
double | crackPadSurvivalProbability_ |
bool | debug_ |
std::vector< std::vector < std::pair< int, float > > > | EBMapping_ |
double | ecorr |
std::vector< std::vector < std::pair< int, float > > > | EEMapping_ |
std::map< uint32_t, std::vector< std::pair< int, float > > > | ESMapping_ |
std::vector< unsigned int > | evtsToDebug_ |
std::vector< int > | firedCellsEB_ |
std::vector< int > | firedCellsEE_ |
std::vector< int > | firedCellsHCAL_ |
int | gridSize_ |
double | hcorr |
int | hdGridSize_ |
int | hdSimMethod_ |
std::vector< std::vector < std::pair< int, float > > > | HMapping_ |
bool | initialized_ |
std::vector< double > | k_e |
std::vector< double > | k_h |
std::vector< double > | mipValues_ |
std::vector< FSimTrack > | muonSimTracks |
CaloGeometryHelper * | myCalorimeter_ |
RawParticle | myElec |
A few pointers to save time. | |
HCALResponse * | myHDResponse_ |
Histos * | myHistos |
HSParameters * | myHSParameters_ |
RawParticle | myPart |
RawParticle | myPosi |
FSimEvent * | mySimEvent |
int | optionHDSim_ |
std::vector< double > | p_knots |
double | pulledPadSurvivalProbability_ |
double | radiusFactor_ |
std::vector< double > | radiusPreshowerCorrections_ |
const RandomEngine * | random |
double | RCFactor_ |
std::vector< double > | rsp |
double | RTFactor_ |
bool | simulatePreshower_ |
double | spotFraction_ |
GflashAntiProtonShowerProfile * | theAntiProtonProfile |
std::vector< double > | theCoreIntervals_ |
std::vector< DetId > | theDetIds_ |
MaterialEffects * | theMuonEcalEffects |
MaterialEffects * | theMuonHcalEffects |
GflashPiKShowerProfile * | thePiKProfile |
GflashHadronShowerProfile * | theProfile |
GflashProtonShowerProfile * | theProtonProfile |
std::vector< double > | theTailIntervals_ |
bool | unfoldedMode_ |
Static Private Attributes | |
static std::vector< std::pair < int, float > > | myZero_ |
Definition at line 38 of file CalorimetryManager.h.
CalorimetryManager::CalorimetryManager | ( | ) |
Definition at line 63 of file CalorimetryManager.cc.
: myCalorimeter_(0), myHistos(0), random(0),initialized_(false) {;}
CalorimetryManager::CalorimetryManager | ( | FSimEvent * | aSimEvent, |
const edm::ParameterSet & | fastCalo, | ||
const edm::ParameterSet & | MuonECALPars, | ||
const edm::ParameterSet & | MuonHCALPars, | ||
const edm::ParameterSet & | fastGflash, | ||
const RandomEngine * | engine | ||
) |
Definition at line 69 of file CalorimetryManager.cc.
References aGammaGenerator, aLandauGenerator, Histos::book(), Histos::bookByNumber(), EBMapping_, EEMapping_, edm::ParameterSet::getParameter(), HMapping_, Histos::instance(), M_PI, myCalorimeter_, myHDResponse_, myHistos, myHSParameters_, random, readParameters(), asciidump::s, theAntiProtonProfile, theDetIds_, theMuonEcalEffects, theMuonHcalEffects, thePiKProfile, theProfile, theProtonProfile, and unfoldedMode_.
: mySimEvent(aSimEvent), random(engine),initialized_(false), theMuonEcalEffects(0), theMuonHcalEffects (0) { aLandauGenerator = new LandauFluctuationGenerator(random); aGammaGenerator = new GammaFunctionGenerator(random); //Gflash theProfile = new GflashHadronShowerProfile(parGflash); thePiKProfile = new GflashPiKShowerProfile(parGflash); theProtonProfile = new GflashProtonShowerProfile(parGflash); theAntiProtonProfile = new GflashAntiProtonShowerProfile(parGflash); readParameters(fastCalo); // EBMapping_.resize(62000,myZero_); // EEMapping_.resize(20000,myZero_); // HMapping_.resize(10000,myZero_); EBMapping_.resize(62000); EEMapping_.resize(20000); HMapping_.resize(10000); theDetIds_.resize(10000); unsigned s=(unfoldedMode_)?5:1; for(unsigned ic=0;ic<62000;++ic) { EBMapping_[ic].reserve(s); if(ic<20000) EEMapping_[ic].reserve(s); if(ic<10000) HMapping_[ic].reserve(s); } myHistos = 0; #ifdef FAMOSDEBUG myHistos = Histos::instance(); myHistos->book("h10",140,-3.5,3.5,100,-0.5,99.5); myHistos->book("h20",150,0,150.,100,-0.5,99.5); myHistos->book("h100",140,-3.5,3.5,100,0,0.1); myHistos->book("h110",140,-3.5,3.5,100,0,10.); myHistos->book("h120",200,-5.,5.,100,0,0.5); myHistos->book("h200",300,0,3.,100,0.,35.); myHistos->book("h210",720,-M_PI,M_PI,100,0,35.); myHistos->book("h212",720,-M_PI,M_PI,100,0,35.); myHistos->bookByNumber("h30",0,7,300,-3.,3.,100,0.,35.); myHistos->book("h310",75,-3.,3.,""); myHistos->book("h400",100,-10.,10.,100,0.,35.); myHistos->book("h410",720,-M_PI,M_PI); #endif myCalorimeter_ = new CaloGeometryHelper(fastCalo); myHDResponse_ = new HCALResponse(fastCalo.getParameter<edm::ParameterSet>("HCALResponse"), random); myHSParameters_ = new HSParameters(fastCalo.getParameter<edm::ParameterSet>("HSParameters")); // Material Effects for Muons in ECAL (only EnergyLoss implemented so far) if ( fastMuECAL.getParameter<bool>("PairProduction") || fastMuECAL.getParameter<bool>("Bremsstrahlung") || fastMuECAL.getParameter<bool>("MuonBremsstrahlung") || fastMuECAL.getParameter<bool>("EnergyLoss") || fastMuECAL.getParameter<bool>("MultipleScattering") ) theMuonEcalEffects = new MaterialEffects(fastMuECAL,random); // Material Effects for Muons in HCAL (only EnergyLoss implemented so far) if ( fastMuHCAL.getParameter<bool>("PairProduction") || fastMuHCAL.getParameter<bool>("Bremsstrahlung") || fastMuHCAL.getParameter<bool>("MuonBremsstrahlung") || fastMuHCAL.getParameter<bool>("EnergyLoss") || fastMuHCAL.getParameter<bool>("MultipleScattering") ) theMuonHcalEffects = new MaterialEffects(fastMuHCAL,random); }
CalorimetryManager::~CalorimetryManager | ( | ) |
Definition at line 186 of file CalorimetryManager.cc.
References myCalorimeter_, myHDResponse_, myHistos, Histos::put(), theMuonEcalEffects, theMuonHcalEffects, and theProfile.
{ #ifdef FAMOSDEBUG myHistos->put("Famos.root"); #endif if(myCalorimeter_) delete myCalorimeter_; if(myHDResponse_) delete myHDResponse_; if ( theMuonEcalEffects ) delete theMuonEcalEffects; if ( theMuonHcalEffects ) delete theMuonHcalEffects; if ( theProfile ) delete theProfile; }
void CalorimetryManager::clean | ( | ) | [private] |
Definition at line 159 of file CalorimetryManager.cc.
References EBMapping_, EEMapping_, ESMapping_, firedCellsEB_, firedCellsEE_, firedCellsHCAL_, HMapping_, muonSimTracks, and findQualityFiles::size.
Referenced by reconstruct().
{ unsigned size=firedCellsEB_.size(); for(unsigned ic=0;ic<size;++ic) { EBMapping_[firedCellsEB_[ic]].clear(); } firedCellsEB_.clear(); size=firedCellsEE_.size(); for(unsigned ic=0;ic<size;++ic) { EEMapping_[firedCellsEE_[ic]].clear(); } firedCellsEE_.clear(); size=firedCellsHCAL_.size(); for(unsigned ic=0;ic<size;++ic) { HMapping_[firedCellsHCAL_[ic]].clear(); } firedCellsHCAL_.clear(); ESMapping_.clear(); muonSimTracks.clear(); }
void CalorimetryManager::EMShowerSimulation | ( | const FSimTrack & | myTrack | ) | [private] |
Definition at line 283 of file CalorimetryManager.cc.
References a, aGammaGenerator, aLandauGenerator, b, EMShower::compute(), crackPadSurvivalProbability_, debug_, EBMapping_, FSimTrack::ecalEntrance(), Calorimeter::ecalProperties(), EEMapping_, ESMapping_, firedCellsEB_, firedCellsEE_, firedCellsHCAL_, RandomEngine::flatShoot(), CaloGeometryHelper::getClosestCell(), PreshowerHitMaker::getHits(), HcalHitMaker::getHits(), EcalHitMaker::getHits(), EMShower::getMaximumOfShower(), gridSize_, HcalDetId::hashed_index(), EEDetId::hashedIndex(), EBDetId::hashedIndex(), FSimTrack::hcalEntrance(), Calorimeter::hcalProperties(), HMapping_, FSimTrack::id(), FSimTrack::layer1Entrance(), Calorimeter::layer1Properties(), FSimTrack::layer2Entrance(), Calorimeter::layer2Properties(), funct::log(), LogDebug, mipValues_, myCalorimeter_, myElec, myPart, myPosi, NULL, FSimTrack::onEcal(), FSimTrack::onHcal(), FSimTrack::onLayer1(), FSimTrack::onLayer2(), pulledPadSurvivalProbability_, radiusFactor_, radiusPreshowerCorrections_, ECALProperties::radLenIncm(), random, RCFactor_, RTFactor_, EcalHitMaker::setCrackPadSurvivalProbability(), EMShower::setGrid(), EMShower::setHcal(), PreshowerHitMaker::setMipEnergy(), EMShower::setPreshower(), EcalHitMaker::setPreshowerPresent(), EcalHitMaker::setPulledPadSurvivalProbability(), EcalHitMaker::setRadiusFactor(), EcalHitMaker::setTrackParameters(), RawParticle::setVertex(), simulatePreshower_, findQualityFiles::size, theCoreIntervals_, theTailIntervals_, CoreSimTrack::type(), updateMap(), RawParticle::vertex(), and CommonMethods::weight().
Referenced by reconstruct().
{ std::vector<const RawParticle*> thePart; double X0depth; if (debug_) { LogDebug("FastCalorimetry") << " EMShowerSimulation " <<myTrack << std::endl; } // std::cout << " Simulating " << myTrack << std::endl; // The Particle at ECAL entrance // std::cout << " Before ecalEntrance " << std::endl; myPart = myTrack.ecalEntrance(); // protection against infinite loop. if ( myTrack.type() == 22 && myPart.e()<0.055) return; // Barrel or Endcap ? int onEcal = myTrack.onEcal(); int onHcal = myTrack.onHcal(); int onLayer1 = myTrack.onLayer1(); int onLayer2 = myTrack.onLayer2(); // The entrance in ECAL XYZPoint ecalentrance = myPart.vertex().Vect(); // std::cout << " Ecal entrance " << ecalentrance << std::endl; // The preshower PreshowerHitMaker * myPreshower = NULL ; if(simulatePreshower_ && (onLayer1 || onLayer2)) { XYZPoint layer1entrance,layer2entrance; XYZVector dir1,dir2; if(onLayer1) { layer1entrance = XYZPoint(myTrack.layer1Entrance().vertex().Vect()); dir1 = XYZVector(myTrack.layer1Entrance().Vect().Unit()); } if(onLayer2) { layer2entrance = XYZPoint(myTrack.layer2Entrance().vertex().Vect()); dir2 = XYZVector(myTrack.layer2Entrance().Vect().Unit()); } // std::cout << " Layer1entrance " << layer1entrance << std::endl; // std::cout << " Layer2entrance " << layer2entrance << std::endl; myPreshower = new PreshowerHitMaker(myCalorimeter_, layer1entrance, dir1, layer2entrance, dir2, aLandauGenerator); myPreshower->setMipEnergy(mipValues_[0],mipValues_[1]); } // The ECAL Properties EMECALShowerParametrization showerparam(myCalorimeter_->ecalProperties(onEcal), myCalorimeter_->hcalProperties(onHcal), myCalorimeter_->layer1Properties(onLayer1), myCalorimeter_->layer2Properties(onLayer2), theCoreIntervals_, theTailIntervals_, RCFactor_, RTFactor_); // Photons : create an e+e- pair if ( myTrack.type() == 22 ) { // Depth for the first e+e- pair creation (in X0) X0depth = -log(random->flatShoot()) * (9./7.); // Initialization double eMass = 0.000510998902; double xe=0; double xm=eMass/myPart.e(); double weight = 0.; // Generate electron energy between emass and eGamma-emass do { xe = random->flatShoot()*(1.-2.*xm) + xm; weight = 1. - 4./3.*xe*(1.-xe); } while ( weight < random->flatShoot() ); // Protection agains infinite loop in Famos Shower if ( myPart.e()*xe < 0.055 || myPart.e()*(1.-xe) < 0.055 ) { if ( myPart.e() > 0.055 ) thePart.push_back(&myPart); } else { myElec = (myPart) * xe; myPosi = (myPart) * (1.-xe); myElec.setVertex(myPart.vertex()); myPosi.setVertex(myPart.vertex()); thePart.push_back(&myElec); thePart.push_back(&myPosi); } // Electrons } else { X0depth = 0.; if ( myPart.e() > 0.055 ) thePart.push_back(&myPart); } // After the different protections, this shouldn't happen. if(thePart.size()==0) { if(myPreshower==NULL) return; delete myPreshower; return; } // find the most energetic particle double maxEnergy=-1.; for(unsigned ip=0;ip < thePart.size();++ip) if(thePart[ip]->e() > maxEnergy) maxEnergy = thePart[ip]->e(); // Initialize the Grid in ECAL int size = gridSize_; if(maxEnergy>100) size=11; // if ( maxEnergy < threshold5x5 ) size = 5; // if ( maxEnergy < threshold3x3 ) size = 3; EMShower theShower(random,aGammaGenerator,&showerparam,&thePart); double maxShower = theShower.getMaximumOfShower(); if (maxShower > 20.) maxShower = 2.; // simple pivot-searching protection double depth((X0depth + maxShower) * myCalorimeter_->ecalProperties(onEcal)->radLenIncm()); XYZPoint meanShower = ecalentrance + myPart.Vect().Unit()*depth; // if(onEcal!=1) return ; // The closest crystal DetId pivot(myCalorimeter_->getClosestCell(meanShower, true, onEcal==1)); if(pivot.subdetId() == 0) { // further protection against avbsence of pivot edm::LogWarning("CalorimetryManager") << "Pivot for egamma e = " << myTrack.hcalEntrance().e() << " is not found at depth " << depth << " and meanShower coordinates = " << meanShower << std::endl; return; } EcalHitMaker myGrid(myCalorimeter_,ecalentrance,pivot,onEcal,size,0,random); // ^^^^ // for EM showers myGrid.setPulledPadSurvivalProbability(pulledPadSurvivalProbability_); myGrid.setCrackPadSurvivalProbability(crackPadSurvivalProbability_); myGrid.setRadiusFactor(radiusFactor_); //maximumdepth dependence of the radiusfactorbehindpreshower // adjusted by Shilpi Jain (Mar-Apr 2010) if(onLayer1 || onLayer2) { float b = radiusPreshowerCorrections_[0]; float a = radiusFactor_*( 1.+radiusPreshowerCorrections_[1]*radiusPreshowerCorrections_[0] ); float maxdepth = X0depth+theShower.getMaximumOfShower(); float newRadiusFactor = radiusFactor_; if(myPart.e()<=250.) { newRadiusFactor = a/(1.+b*maxdepth); } myGrid.setRadiusFactor(newRadiusFactor); } else // otherwise use the normal radius factor { myGrid.setRadiusFactor(radiusFactor_); } myGrid.setPreshowerPresent(simulatePreshower_); // The shower simulation myGrid.setTrackParameters(myPart.Vect().Unit(),X0depth,myTrack); // std::cout << " PS ECAL GAP HCAL X0 " << myGrid.ps1TotalX0()+myGrid.ps2TotalX0() << " " << myGrid.ecalTotalX0(); // std::cout << " " << myGrid.ecalHcalGapTotalX0() << " " << myGrid.hcalTotalX0() << std::endl; // std::cout << " PS ECAL GAP HCAL L0 " << myGrid.ps1TotalL0()+myGrid.ps2TotalL0() << " " << myGrid.ecalTotalL0(); // std::cout << " " << myGrid.ecalHcalGapTotalL0() << " " << myGrid.hcalTotalL0() << std::endl; // std::cout << "ECAL-HCAL " << myTrack.momentum().eta() << " " << myGrid.ecalHcalGapTotalL0() << std::endl; // // std::cout << " Grid created " << std::endl; if(myPreshower) theShower.setPreshower(myPreshower); HcalHitMaker myHcalHitMaker(myGrid,(unsigned)0); theShower.setGrid(&myGrid); theShower.setHcal(&myHcalHitMaker); // std:: cout << " About to compute " << std::endl; theShower.compute(); // std::cout << " Coming back from compute" << std::endl; //myHistos->fill("h502", myPart->eta(),myGrid.totalX0()); // Save the hits ! std::map<uint32_t,float>::const_iterator mapitr; std::map<uint32_t,float>::const_iterator endmapitr=myGrid.getHits().end(); for(mapitr=myGrid.getHits().begin();mapitr!=endmapitr;++mapitr) { if(onEcal==1) { updateMap(EBDetId(mapitr->first).hashedIndex(), mapitr->second,myTrack.id(),EBMapping_,firedCellsEB_); } else if(onEcal==2) updateMap(EEDetId(mapitr->first).hashedIndex(), mapitr->second,myTrack.id(),EEMapping_,firedCellsEE_); // std::cout << " Adding " <<mapitr->first << " " << mapitr->second <<std::endl; } // Now fill the HCAL hits endmapitr=myHcalHitMaker.getHits().end(); for(mapitr=myHcalHitMaker.getHits().begin();mapitr!=endmapitr;++mapitr) { updateMap(HcalDetId(mapitr->first).hashed_index(),mapitr->second,myTrack.id(),HMapping_,firedCellsHCAL_); // std::cout << " Adding " <<mapitr->first << " " << mapitr->second <<std::endl; } // delete the preshower if(myPreshower!=0) { endmapitr=myPreshower->getHits().end(); for(mapitr=myPreshower->getHits().begin();mapitr!=endmapitr;++mapitr) { updateMap(mapitr->first,mapitr->second,myTrack.id(),ESMapping_); // std::cout << " Adding " <<mapitr->first << " " << mapitr->second <<std::endl; } delete myPreshower; } // std::cout << " Deleting myPreshower " << std::endl; }
CaloGeometryHelper* CalorimetryManager::getCalorimeter | ( | ) | const [inline] |
Definition at line 54 of file CalorimetryManager.h.
References myCalorimeter_.
Referenced by FamosManager::setupGeometryAndField().
{return myCalorimeter_;}
void CalorimetryManager::HDShowerSimulation | ( | const FSimTrack & | myTrack | ) | [private] |
Hadronic Shower Simulation.
Definition at line 678 of file CalorimetryManager.cc.
References HcalHitMaker::addHit(), FSimTrack::charge(), DeDxDiscriminatorTools::charge(), HFShower::compute(), HDShower::compute(), HDRShower::computeShower(), debug_, EBMapping_, FSimTrack::ecalEntrance(), Calorimeter::ecalProperties(), ecorr, EEMapping_, relval_parameters_module::energy, firedCellsEB_, firedCellsEE_, firedCellsHCAL_, RandomEngine::gaussShoot(), Gflash::getCalorimeterNumber(), CaloGeometryHelper::getClosestCell(), GflashHadronShowerProfile::getGflashHitList(), GflashHadronShowerProfile::getGflashShowino(), GflashTrajectory::getGflashTrajectoryPoint(), HCALResponse::getHCALEnergyResolution(), HCALResponse::getHCALEnergyResponse(), GflashShowino::getHelix(), HcalHitMaker::getHits(), HDShower::getmip(), GflashShowino::getPathLengthAtShower(), GflashShowino::getPathLengthOnEcal(), GflashHadronShowerProfile::hadronicParameterization(), HcalDetId::hashed_index(), EEDetId::hashedIndex(), EBDetId::hashedIndex(), FSimTrack::hcalEntrance(), Calorimeter::hcalProperties(), hcorr, hdGridSize_, hdSimMethod_, HMapping_, FSimTrack::id(), GflashHadronShowerProfile::initialize(), Gflash::intLength, Gflash::kENCA, Gflash::kESPM, Gflash::kHB, Gflash::kHE, Gflash::kNULL, GflashHadronShowerProfile::loadParameters(), LogDebug, max(), FSimTrack::momentum(), myCalorimeter_, myHDResponse_, myHSParameters_, myPart, DetId::null(), FSimTrack::onEcal(), FSimTrack::onHcal(), FSimTrack::onVFcal(), optionHDSim_, random, DetId::rawId(), respCorr(), HCALResponse::responseHCAL(), query::result, HcalHitMaker::setDepth(), HcalHitMaker::setSpotEnergy(), EcalHitMaker::setTrackParameters(), ntuplemaker::status, theAntiProtonProfile, thePiKProfile, theProfile, theProtonProfile, CoreSimTrack::type(), updateMap(), RawParticle::vertex(), and FSimTrack::vfcalEntrance().
Referenced by reconstruct().
{ // TimeMe t(" FASTEnergyReconstructor::HDShower"); XYZTLorentzVector moment = myTrack.momentum(); if(debug_) LogDebug("FastCalorimetry") << "CalorimetryManager::HDShowerSimulation - track param." << std::endl << " eta = " << moment.eta() << std::endl << " phi = " << moment.phi() << std::endl << " et = " << moment.Et() << std::endl << " e = " << myTrack.hcalEntrance().e() << std::endl; if (debug_) { LogDebug("FastCalorimetry") << " HDShowerSimulation " << myTrack << std::endl; } int hit; // int pid = abs(myTrack.type()); XYZTLorentzVector trackPosition; if ( myTrack.onEcal() ) { trackPosition=myTrack.ecalEntrance().vertex(); hit = myTrack.onEcal()-1; // myPart = myTrack.ecalEntrance(); } else if ( myTrack.onVFcal()) { trackPosition=myTrack.vfcalEntrance().vertex(); hit = 2; myPart = myTrack.vfcalEntrance(); } else { LogDebug("FastCalorimetry") << " The particle is not in the acceptance " << std::endl; return; } // int onHCAL = hit + 1; - specially for myCalorimeter->hcalProperties(onHCAL) // (below) to get VFcal properties ... int onHCAL = hit + 1; int onECAL = myTrack.onEcal(); double pathEta = trackPosition.eta(); double pathPhi = trackPosition.phi(); // double pathTheta = trackPosition.theta(); double eint = moment.e(); double eGen = myTrack.hcalEntrance().e(); double e = 0.; double sigma = 0.; double emeas = 0.; //=========================================================================== if(eGen > 0.) { // ECAL and HCAL properties to get HDShowerParametrization theHDShowerparam(myCalorimeter_->ecalProperties(onECAL), myCalorimeter_->hcalProperties(onHCAL), myHSParameters_); //Making ECAL Grid (and segments calculation) XYZPoint caloentrance; XYZVector direction; if(myTrack.onEcal()) { caloentrance = myTrack.ecalEntrance().vertex().Vect(); direction = myTrack.ecalEntrance().Vect().Unit(); } else if(myTrack.onHcal()) { caloentrance = myTrack.hcalEntrance().vertex().Vect(); direction = myTrack.hcalEntrance().Vect().Unit(); } else { caloentrance = myTrack.vfcalEntrance().vertex().Vect(); direction = myTrack.vfcalEntrance().Vect().Unit(); } if(debug_) LogDebug("FastCalorimetry") << "CalorimetryManager::HDShowerSimulation - on-calo 1 " << std::endl << " onEcal = " << myTrack.onEcal() << std::endl << " onHcal = " << myTrack.onHcal() << std::endl << " onVFcal = " << myTrack.onVFcal() << std::endl << " position = " << caloentrance << std::endl; DetId pivot; if(myTrack.onEcal()) { pivot=myCalorimeter_->getClosestCell(caloentrance, true, myTrack.onEcal()==1); } else if(myTrack.onHcal()) { // std::cout << " CalorimetryManager onHcal " << myTrack.onHcal() << " caloentrance" << caloentrance << std::endl; pivot=myCalorimeter_->getClosestCell(caloentrance, false, false); } EcalHitMaker myGrid(myCalorimeter_,caloentrance,pivot, pivot.null()? 0 : myTrack.onEcal(),hdGridSize_,1, random); // 1=HAD shower myGrid.setTrackParameters(direction,0,myTrack); // Build the FAMOS HCAL HcalHitMaker myHcalHitMaker(myGrid,(unsigned)1); // Shower simulation bool status = false; int mip = 2; // Use HFShower for HF if ( !myTrack.onEcal() && !myTrack.onHcal() ) { // std::cout << "CalorimetryManager::HDShowerSimulation(): track entrance = " // << myTrack.vfcalEntrance().vertex().X() << " " // << myTrack.vfcalEntrance().vertex().Y() << " " // << myTrack.vfcalEntrance().vertex().Z() << " " // << " , Energy (Gen/Scale) = " << eGen << " " << e << std::endl; // Warning : We give here the particle energy with the response // but without the resolution/gaussian smearing // For HF, the resolution is due to the PE statistic HFShower theShower(random, &theHDShowerparam, &myGrid, &myHcalHitMaker, onECAL, eGen); // eGen); // e); // PV Warning : temporarly set the energy to the generated E status = theShower.compute(); } else { if(hdSimMethod_ == 0) { HDShower theShower(random, &theHDShowerparam, &myGrid, &myHcalHitMaker, onECAL, eGen); status = theShower.compute(); mip = theShower.getmip(); } else if (hdSimMethod_ == 1) { HDRShower theShower(random, &theHDShowerparam, &myGrid, &myHcalHitMaker, onECAL, eGen); status = theShower.computeShower(); mip = 2; } else if (hdSimMethod_ == 2 ) { // std::cout << "Using GflashHadronShowerProfile hdSimMethod_ == 2" << std::endl; //dynamically loading a corresponding profile by the particle type int particleType = myTrack.type(); theProfile = thePiKProfile; if(particleType == -2212) theProfile = theAntiProtonProfile; else if(particleType == 2212) theProfile = theProtonProfile; //input variables for GflashHadronShowerProfile int showerType = 99 + myTrack.onEcal(); double globalTime = 150.0; // a temporary reference hit time in nanosecond float charge = (float)(myTrack.charge()); Gflash3Vector gfpos(trackPosition.X(),trackPosition.Y(),trackPosition.Z()); Gflash3Vector gfmom(moment.X(),moment.Y(),moment.Z()); theProfile->initialize(showerType,eGen,globalTime,charge,gfpos,gfmom); theProfile->loadParameters(); theProfile->hadronicParameterization(); //make hits std::vector<GflashHit>& gflashHitList = theProfile->getGflashHitList(); std::vector<GflashHit>::const_iterator spotIter = gflashHitList.begin(); std::vector<GflashHit>::const_iterator spotIterEnd = gflashHitList.end(); Gflash::CalorimeterNumber whichCalor = Gflash::kNULL; bool result; for( ; spotIter != spotIterEnd; spotIter++){ double pathLength = theProfile->getGflashShowino()->getPathLengthAtShower() + (30*100/eGen)*(spotIter->getTime() - globalTime); double currentDepth = std::max(0.0,pathLength - theProfile->getGflashShowino()->getPathLengthOnEcal()); //find the the showino position at the currentDepth GflashTrajectoryPoint trajectoryPoint; theProfile->getGflashShowino()->getHelix()->getGflashTrajectoryPoint(trajectoryPoint,pathLength); Gflash3Vector positionAtCurrentDepth = trajectoryPoint.getPosition(); //find radial distrance Gflash3Vector lateralDisplacement = positionAtCurrentDepth - spotIter->getPosition()/CLHEP::cm; double rShower = lateralDisplacement.r(); double azimuthalAngle = lateralDisplacement.phi(); whichCalor = Gflash::getCalorimeterNumber(positionAtCurrentDepth); if(whichCalor==Gflash::kESPM || whichCalor==Gflash::kENCA) { bool statusPad = myGrid.getPads(currentDepth,true); if(!statusPad) continue; myGrid.setSpotEnergy(1.2*spotIter->getEnergy()/CLHEP::GeV); result = myGrid.addHit(rShower/Gflash::intLength[Gflash::kESPM],azimuthalAngle,0); } else if(whichCalor==Gflash::kHB || whichCalor==Gflash::kHE) { bool setHDdepth = myHcalHitMaker.setDepth(currentDepth,true); if(!setHDdepth) continue; myHcalHitMaker.setSpotEnergy(1.4*spotIter->getEnergy()/CLHEP::GeV); result = myHcalHitMaker.addHit(rShower/Gflash::intLength[Gflash::kHB],azimuthalAngle,0); } } status = true; } else { edm::LogInfo("FastSimulationCalorimetry") << " SimMethod " << hdSimMethod_ <<" is NOT available "; } } if(status) { // Here to switch between simple formulae and parameterized response if(optionHDSim_ == 1) { e = myHDResponse_->getHCALEnergyResponse (eGen, hit); sigma = myHDResponse_->getHCALEnergyResolution(eGen, hit); } else { // optionHDsim == 2 std::pair<double,double> response = myHDResponse_->responseHCAL(mip, eGen, pathEta, 1); // 1=hadron e = response.first; sigma = response.second; } emeas = random->gaussShoot(e,sigma); double correction = emeas / eGen; // RespCorrP factors (ECAL and HCAL separately) calculation respCorr(eint); if(debug_) LogDebug("FastCalorimetry") << "CalorimetryManager::HDShowerSimulation - on-calo 2" << std::endl << " eta = " << pathEta << std::endl << " phi = " << pathPhi << std::endl << " Egen = " << eGen << std::endl << " Eres = " << e << std::endl << " sigma = " << sigma << std::endl << " Emeas = " << emeas << std::endl << " corr = " << correction << std::endl << " mip = " << mip << std::endl; // was map<unsigned,double> but CaloHitMaker uses float std::map<unsigned,float>::const_iterator mapitr; std::map<unsigned,float>::const_iterator endmapitr; if(myTrack.onEcal() > 0) { // Save ECAL hits endmapitr=myGrid.getHits().end(); for(mapitr=myGrid.getHits().begin(); mapitr!=endmapitr; ++mapitr) { double energy = mapitr->second; energy *= correction; // RESCALING energy *= ecorr; if(energy > 0.000001) { if(onECAL==1) updateMap(EBDetId(mapitr->first).hashedIndex(),energy,myTrack.id(),EBMapping_,firedCellsEB_); else if(onECAL==2) updateMap(EEDetId(mapitr->first).hashedIndex(),energy,myTrack.id(),EEMapping_,firedCellsEE_); if(debug_) LogDebug("FastCalorimetry") << " ECAL cell " << mapitr->first << " added, E = " << energy << std::endl; } } } // Save HCAL hits endmapitr=myHcalHitMaker.getHits().end(); for(mapitr=myHcalHitMaker.getHits().begin(); mapitr!=endmapitr; ++mapitr) { double energy = mapitr->second; energy *= correction; // RESCALING energy *= hcorr; updateMap(HcalDetId(mapitr->first).hashed_index(),energy,myTrack.id(),HMapping_,firedCellsHCAL_); if(debug_) LogDebug("FastCalorimetry") << " HCAL cell " << mapitr->first << " added E = " << mapitr->second << std::endl; } } else { // shower simulation failed // std::cout << " Shower simulation failed " << trackPosition.Vect() << std::endl; // std::cout << " The FSimTrack " << myTrack << std::endl; // std::cout << " HF entrance on VFcal" << myTrack.onVFcal() << std::endl; // std::cout << " trackPosition.eta() " << trackPosition.eta() << std::endl; if(myTrack.onHcal() || myTrack.onVFcal()) { DetId cell = myCalorimeter_->getClosestCell(trackPosition.Vect(),false,false); updateMap(HcalDetId(cell).hashed_index(),emeas,myTrack.id(),HMapping_,firedCellsHCAL_); if(debug_) LogDebug("FastCalorimetry") << " HCAL simple cell " << cell.rawId() << " added E = " << emeas << std::endl; } } } // e > 0. ... if(debug_) LogDebug("FastCalorimetry") << std::endl << " FASTEnergyReconstructor::HDShowerSimulation finished " << std::endl; }
void CalorimetryManager::loadFromEcalBarrel | ( | edm::PCaloHitContainer & | c | ) | const |
Definition at line 1472 of file CalorimetryManager.cc.
References EBMapping_, firedCellsEB_, first, npart, edm::second(), findQualityFiles::size, unfoldedMode_, and EBDetId::unhashIndex().
{ unsigned size=firedCellsEB_.size(); // float sum=0.; for(unsigned ic=0;ic<size;++ic) { int hi=firedCellsEB_[ic]; if(!unfoldedMode_) { c.push_back(PCaloHit(EBDetId::unhashIndex(hi),EBMapping_[hi][0].second,0.,0)); // std::cout << "Adding " << hi << " " << EBDetId::unhashIndex(hi) << " " ; // std::cout << EBMapping_[hi][0].second << " " << EBMapping_[hi][0].first << std::endl; } else { unsigned npart=EBMapping_[hi].size(); for(unsigned ip=0;ip<npart;++ip) { c.push_back(PCaloHit(EBDetId::unhashIndex(hi),EBMapping_[hi][ip].second,0., EBMapping_[hi][ip].first)); } } // sum+=cellit->second; } // for(unsigned ic=0;ic<61200;++ic) // { // EBDetId myCell(EBDetId::unhashIndex(ic)); // if(!myCell.null()) // { // float total=0.; // for(unsigned id=0;id<EBMapping_[ic].size();++id) // total+=EBMapping_[ic][id].second; // if(EBMapping_[ic].size()>0) // std::cout << "Adding " << ic << " " << myCell << " " << std::setprecision(8) <<total << std::endl; // } // } // std::cout << " SUM : " << sum << std::endl; // std::cout << " Added " <<c.size() << " hits " <<std::endl; }
void CalorimetryManager::loadFromEcalEndcap | ( | edm::PCaloHitContainer & | c | ) | const |
Definition at line 1518 of file CalorimetryManager.cc.
References EEMapping_, firedCellsEE_, first, npart, edm::second(), findQualityFiles::size, unfoldedMode_, and EEDetId::unhashIndex().
{ unsigned size=firedCellsEE_.size(); // float sum=0.; for(unsigned ic=0;ic<size;++ic) { int hi=firedCellsEE_[ic]; if(!unfoldedMode_) c.push_back(PCaloHit(EEDetId::unhashIndex(hi),EEMapping_[hi][0].second,0.,0)); else { unsigned npart=EEMapping_[hi].size(); for(unsigned ip=0;ip<npart;++ip) c.push_back(PCaloHit(EEDetId::unhashIndex(hi),EEMapping_[hi][ip].second,0., EEMapping_[hi][ip].first)); } // sum+=cellit->second; } // std::cout << " SUM : " << sum << std::endl; // std::cout << " Added " <<c.size() << " hits " <<std::endl; }
void CalorimetryManager::loadFromHcal | ( | edm::PCaloHitContainer & | c | ) | const |
Definition at line 1541 of file CalorimetryManager.cc.
References firedCellsHCAL_, first, HMapping_, npart, edm::second(), findQualityFiles::size, theDetIds_, and unfoldedMode_.
{ unsigned size=firedCellsHCAL_.size(); // float sum=0.; for(unsigned ic=0;ic<size;++ic) { int hi=firedCellsHCAL_[ic]; if(!unfoldedMode_) c.push_back(PCaloHit(theDetIds_[hi],HMapping_[hi][0].second,0.,0)); else { unsigned npart=HMapping_[hi].size(); for(unsigned ip=0;ip<npart;++ip) c.push_back(PCaloHit(theDetIds_[hi],HMapping_[hi][ip].second,0., HMapping_[hi][ip].first)); } // sum+=cellit->second; } // std::cout << " SUM : " << sum << std::endl; // std::cout << " Added " <<c.size() << " hits " <<std::endl; }
void CalorimetryManager::loadFromPreshower | ( | edm::PCaloHitContainer & | c | ) | const |
Definition at line 1564 of file CalorimetryManager.cc.
References ESMapping_, npart, and unfoldedMode_.
{ std::map<uint32_t,std::vector<std::pair< int,float> > >::const_iterator cellit; std::map<uint32_t,std::vector<std::pair <int,float> > >::const_iterator preshEnd=ESMapping_.end(); for(cellit=ESMapping_.begin();cellit!=preshEnd;++cellit) { if(!unfoldedMode_) c.push_back(PCaloHit(cellit->first,cellit->second[0].second,0.,0)); else { unsigned npart=cellit->second.size(); for(unsigned ip=0;ip<npart;++ip) { c.push_back(PCaloHit(cellit->first,cellit->second[ip].second,0.,cellit->second[ip].first)); } } } }
void CalorimetryManager::loadMuonSimTracks | ( | edm::SimTrackContainer & | m | ) | const |
Definition at line 1587 of file CalorimetryManager.cc.
References abs, i, muonSimTracks, and findQualityFiles::size.
{ unsigned size=muons.size(); for(unsigned i=0; i<size;++i) { int id=muons[i].trackId(); if(abs(muons[i].type())!=13) continue; // identify the corresponding muon in the local collection std::vector<FSimTrack>::const_iterator itcheck=find_if(muonSimTracks.begin(),muonSimTracks.end(),FSimTrackEqual(id)); if(itcheck!=muonSimTracks.end()) { muons[i].setTkPosition(itcheck->trackerSurfacePosition()); muons[i].setTkMomentum(itcheck->trackerSurfaceMomentum()); // std::cout << " Found the SimTrack " << std::endl; // std::cout << *itcheck << std::endl; // std::cout << "SimTrack Id "<< id << " " << muons[i] << " " << std::endl; } // else // { // std::cout << " Calorimetery Manager : this should really not happen " << std::endl; // std::cout << " Was looking for " << id << " " << muons[i] << std::endl; // for(unsigned i=0;i<muonSimTracks.size();++i) // std::cout << muonSimTracks[i] << std::endl; // } } }
void CalorimetryManager::MuonMipSimulation | ( | const FSimTrack & | myTrack | ) | [private] |
// /// TEMPORARY First attempt to include HCAL (with straight-line extrapolation):
Definition at line 1001 of file CalorimetryManager.cc.
References HcalHitMaker::addHit(), FSimTrack::charge(), DeDxDiscriminatorTools::charge(), debug_, EnergyLossSimulator::deltaMom(), EBMapping_, FSimTrack::ecalEntrance(), EEMapping_, relval_parameters_module::energy, MaterialEffects::energyLossSimulator(), firedCellsEB_, firedCellsEE_, firedCellsHCAL_, CaloGeometryHelper::getClosestCell(), HcalHitMaker::getHits(), HcalDetId::hashed_index(), EEDetId::hashedIndex(), EBDetId::hashedIndex(), CaloSegment::HCAL, FSimTrack::hcalEntrance(), hdGridSize_, HMapping_, FSimTrack::id(), LogDebug, FSimTrack::momentum(), MaterialEffects::muonBremsstrahlungSimulator(), muonSimTracks, myCalorimeter_, myPart, DetId::null(), FSimTrack::onEcal(), FSimTrack::onHcal(), FSimTrack::onVFcal(), CaloSegment::PbWO4, random, reconstructHCAL(), RawParticle::setID(), HcalHitMaker::setSpotEnergy(), SimTrack::setTkMomentum(), SimTrack::setTkPosition(), EcalHitMaker::setTrackParameters(), theMuonEcalEffects, theMuonHcalEffects, updateMap(), MaterialEffectsSimulator::updateState(), RawParticle::vertex(), and FSimTrack::vfcalEntrance().
Referenced by reconstruct().
{ // TimeMe t(" FASTEnergyReconstructor::HDShower"); XYZTLorentzVector moment = myTrack.momentum(); // Backward compatibility behaviour if(!theMuonHcalEffects) { if(myTrack.onHcal() || myTrack.onVFcal() ) reconstructHCAL(myTrack); return; } if(debug_) LogDebug("FastCalorimetry") << "CalorimetryManager::MuonMipSimulation - track param." << std::endl << " eta = " << moment.eta() << std::endl << " phi = " << moment.phi() << std::endl << " et = " << moment.Et() << std::endl; int hit; // int pid = abs(myTrack.type()); XYZTLorentzVector trackPosition; if ( myTrack.onEcal() ) { trackPosition=myTrack.ecalEntrance().vertex(); hit = myTrack.onEcal()-1; // myPart = myTrack.ecalEntrance(); } else if ( myTrack.onVFcal()) { trackPosition=myTrack.vfcalEntrance().vertex(); hit = 2; myPart = myTrack.vfcalEntrance(); } else { LogDebug("FastCalorimetry") << " The particle is not in the acceptance " << std::endl; return; } // int onHCAL = hit + 1; - specially for myCalorimeter->hcalProperties(onHCAL) // (below) to get VFcal properties ... // not needed ? // int onHCAL = hit + 1; int onECAL = myTrack.onEcal(); // double pathEta = trackPosition.eta(); // double pathPhi = trackPosition.phi(); // double pathTheta = trackPosition.theta(); //=========================================================================== // ECAL and HCAL properties to get //Making ECAL Grid (and segments calculation) XYZPoint caloentrance; XYZVector direction; if(myTrack.onEcal()) { caloentrance = myTrack.ecalEntrance().vertex().Vect(); direction = myTrack.ecalEntrance().Vect().Unit(); } else if(myTrack.onHcal()) { caloentrance = myTrack.hcalEntrance().vertex().Vect(); direction = myTrack.hcalEntrance().Vect().Unit(); } else { caloentrance = myTrack.vfcalEntrance().vertex().Vect(); direction = myTrack.vfcalEntrance().Vect().Unit(); } DetId pivot; if(myTrack.onEcal()) { pivot=myCalorimeter_->getClosestCell(caloentrance, true, myTrack.onEcal()==1); } else if(myTrack.onHcal()) { // std::cout << " CalorimetryManager onHcal " << myTrack.onHcal() << " caloentrance" << caloentrance << std::endl; pivot=myCalorimeter_->getClosestCell(caloentrance, false, false); } EcalHitMaker myGrid(myCalorimeter_,caloentrance,pivot, pivot.null()? 0 : myTrack.onEcal(),hdGridSize_,0, random); // 0 =EM shower -> Unit = X0 myGrid.setTrackParameters(direction,0,myTrack); // Now get the path in the Preshower, ECAL and HCAL along a straight line extrapolation // but only those in the ECAL are used const std::vector<CaloSegment>& segments=myGrid.getSegments(); unsigned nsegments=segments.size(); int ifirstHcal=-1; int ilastEcal=-1; EnergyLossSimulator* energyLossECAL = 0; //New muon brem effect in Calorimetry 16th Jan 2011 (Sandro Fonseca de Souza and Andre Sznajder UERJ/Brazil) MuonBremsstrahlungSimulator* muonBremECAL = 0; if (theMuonEcalEffects) energyLossECAL = theMuonEcalEffects->energyLossSimulator(); // Muon brem in ECAL if (theMuonEcalEffects) muonBremECAL = theMuonEcalEffects->muonBremsstrahlungSimulator(); for(unsigned iseg=0;iseg<nsegments&&ifirstHcal<0;++iseg) { // in the ECAL, there are two types of segments: PbWO4 and GAP float segmentSizeinX0=segments[iseg].X0length(); // Martijn - insert your computations here float energy=0.0; if (segmentSizeinX0>0.001 && segments[iseg].material()==CaloSegment::PbWO4 ) { // The energy loss simulator float charge = (float)(myTrack.charge()); ParticlePropagator theMuon(moment,trackPosition,charge,0); theMuon.setID(-(int)charge*13); if ( energyLossECAL ) { energyLossECAL->updateState(theMuon, segmentSizeinX0); energy = energyLossECAL->deltaMom().E(); moment -= energyLossECAL->deltaMom(); } } // that's all for ECAL, Florian // Save the hit only if it is a crystal if(segments[iseg].material()==CaloSegment::PbWO4) { myGrid.getPads(segments[iseg].sX0Entrance()+segmentSizeinX0*0.5); myGrid.setSpotEnergy(energy); myGrid.addHit(0.,0.); ilastEcal=iseg; } // Check for end of loop: if(segments[iseg].material()==CaloSegment::HCAL) { ifirstHcal=iseg; } } // Position of Ecal Exit math::XYZVector ecalExit; if(ilastEcal>=0) math::XYZVector ecalExit=segments[ilastEcal].exit(); // Position of HCAL entrance math::XYZVector hcalEntrance; if(ifirstHcal>=0) hcalEntrance=segments[ifirstHcal].entrance(); // dummy HCAL exit, just to test the FSimTrack saving mechanism math::XYZVector hcalExit; if(ifirstHcal>=0) hcalExit=segments[ifirstHcal].exit(); // Build the FAMOS HCAL HcalHitMaker myHcalHitMaker(myGrid,(unsigned)2); // float mipenergy=0.1; // Create the helix with the stepping helix propagator // to add a hit, just do // myHcalHitMaker.setSpotEnergy(mipenergy); // myHcalHitMaker.addHit(hcalEntrance); int ilastHcal=-1; float mipenergy=0.0; EnergyLossSimulator* energyLossHCAL = 0; // Implementation of Muon Brem Effect in HCAL (Sandro Fonseca de Souza and Andre Sznajder UERJ/Brazil) //Date 01/16/2011 MuonBremsstrahlungSimulator* muonBremHCAL = 0; if (theMuonHcalEffects) energyLossHCAL = theMuonHcalEffects->energyLossSimulator(); // Muon Brem effect if (theMuonHcalEffects) muonBremHCAL = theMuonHcalEffects->muonBremsstrahlungSimulator(); if(ifirstHcal>0 && energyLossHCAL){ for(unsigned iseg=ifirstHcal;iseg<nsegments;++iseg) { float segmentSizeinX0=segments[iseg].X0length(); if (segmentSizeinX0>0.001 && segments[iseg].material()==CaloSegment::HCAL ) { // The energy loss simulator float charge = (float)(myTrack.charge()); ParticlePropagator theMuon(moment,trackPosition,charge,0); theMuon.setID(-(int)charge*13); energyLossHCAL->updateState(theMuon, segmentSizeinX0); mipenergy = energyLossHCAL->deltaMom().E(); moment -= energyLossHCAL->deltaMom(); myHcalHitMaker.setSpotEnergy(mipenergy); myHcalHitMaker.addHit(segments[iseg].entrance()); } if(segments[iseg].material()==CaloSegment::HCAL) { ilastHcal=iseg; } } } if(ilastHcal>=0) // Update hcalExit position from 'dummy' HCAL entrance to 'staight line' HCAL exit hcalExit=segments[ilastHcal].exit(); // // Copy the muon SimTrack (Only for Energy loss) FSimTrack muonTrack(myTrack); if(energyLossHCAL) { muonTrack.setTkPosition(hcalExit); muonTrack.setTkMomentum(moment); } else if(energyLossECAL) { muonTrack.setTkPosition(ecalExit); muonTrack.setTkMomentum(moment); } // else just leave tracker surface position and momentum... muonSimTracks.push_back(muonTrack); // no need to change below this line std::map<unsigned,float>::const_iterator mapitr; std::map<unsigned,float>::const_iterator endmapitr; if(myTrack.onEcal() > 0) { // Save ECAL hits endmapitr=myGrid.getHits().end(); for(mapitr=myGrid.getHits().begin(); mapitr!=endmapitr; ++mapitr) { double energy = mapitr->second; if(onECAL==1) { updateMap(EBDetId(mapitr->first).hashedIndex(),energy,myTrack.id(),EBMapping_,firedCellsEB_); } else if(onECAL==2) { updateMap(EEDetId(mapitr->first).hashedIndex(),energy,myTrack.id(),EEMapping_,firedCellsEE_); } if(debug_) LogDebug("FastCalorimetry") << " ECAL cell " << mapitr->first << " added, E = " << energy << std::endl; } } // Save HCAL hits endmapitr=myHcalHitMaker.getHits().end(); for(mapitr=myHcalHitMaker.getHits().begin(); mapitr!=endmapitr; ++mapitr) { double energy = mapitr->second; { updateMap(HcalDetId(mapitr->first).hashed_index(),energy,myTrack.id(),HMapping_,firedCellsHCAL_); } if(debug_) LogDebug("FastCalorimetry") << " HCAL cell " << mapitr->first << " added E = " << mapitr->second << std::endl; } if(debug_) LogDebug("FastCalorimetry") << std::endl << " FASTEnergyReconstructor::MipShowerSimulation finished " << std::endl; }
void CalorimetryManager::readParameters | ( | const edm::ParameterSet & | fastCalo | ) | [private] |
Definition at line 1269 of file CalorimetryManager.cc.
References crackPadSurvivalProbability_, debug_, evtsToDebug_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), gridSize_, hdGridSize_, hdSimMethod_, i, k_e, k_h, mipValues_, optionHDSim_, p_knots, pulledPadSurvivalProbability_, radiusFactor_, radiusPreshowerCorrections_, RCFactor_, rsp, RTFactor_, simulatePreshower_, spotFraction_, theCoreIntervals_, theTailIntervals_, and unfoldedMode_.
Referenced by CalorimetryManager().
{ edm::ParameterSet ECALparameters = fastCalo.getParameter<edm::ParameterSet>("ECAL"); evtsToDebug_ = fastCalo.getUntrackedParameter<std::vector<unsigned int> >("EvtsToDebug",std::vector<unsigned>()); debug_ = fastCalo.getUntrackedParameter<bool>("Debug"); gridSize_ = ECALparameters.getParameter<int>("GridSize"); spotFraction_ = ECALparameters.getParameter<double>("SpotFraction"); pulledPadSurvivalProbability_ = ECALparameters.getParameter<double>("FrontLeakageProbability"); crackPadSurvivalProbability_ = ECALparameters.getParameter<double>("GapLossProbability"); theCoreIntervals_ = ECALparameters.getParameter<std::vector<double> >("CoreIntervals"); theTailIntervals_ = ECALparameters.getParameter<std::vector<double> >("TailIntervals"); RCFactor_ = ECALparameters.getParameter<double>("RCFactor"); RTFactor_ = ECALparameters.getParameter<double>("RTFactor"); radiusFactor_ = ECALparameters.getParameter<double>("RadiusFactor"); radiusPreshowerCorrections_ = ECALparameters.getParameter<std::vector<double> >("RadiusPreshowerCorrections"); mipValues_ = ECALparameters.getParameter<std::vector<double> >("MipsinGeV"); simulatePreshower_ = ECALparameters.getParameter<bool>("SimulatePreshower"); if(gridSize_ <1) gridSize_= 7; if(pulledPadSurvivalProbability_ <0. || pulledPadSurvivalProbability_>1 ) pulledPadSurvivalProbability_= 1.; if(crackPadSurvivalProbability_ <0. || crackPadSurvivalProbability_>1 ) crackPadSurvivalProbability_= 0.9; LogInfo("FastCalorimetry") << " Fast ECAL simulation parameters " << std::endl; LogInfo("FastCalorimetry") << " =============================== " << std::endl; if(simulatePreshower_) LogInfo("FastCalorimetry") << " The preshower is present " << std::endl; else LogInfo("FastCalorimetry") << " The preshower is NOT present " << std::endl; LogInfo("FastCalorimetry") << " Grid Size : " << gridSize_ << std::endl; if(spotFraction_>0.) LogInfo("FastCalorimetry") << " Spot Fraction : " << spotFraction_ << std::endl; else { LogInfo("FastCalorimetry") << " Core of the shower " << std::endl; for(unsigned ir=0; ir < theCoreIntervals_.size()/2;++ir) { LogInfo("FastCalorimetry") << " r < " << theCoreIntervals_[ir*2] << " R_M : " << theCoreIntervals_[ir*2+1] << " "; } LogInfo("FastCalorimetry") << std::endl; LogInfo("FastCalorimetry") << " Tail of the shower " << std::endl; for(unsigned ir=0; ir < theTailIntervals_.size()/2;++ir) { LogInfo("FastCalorimetry") << " r < " << theTailIntervals_[ir*2] << " R_M : " << theTailIntervals_[ir*2+1] << " "; } LogInfo("FastCalotimetry") << "Radius correction factor " << radiusFactor_ << std::endl; LogInfo("FastCalorimetry") << std::endl; if(mipValues_.size()>2) { LogInfo("FastCalorimetry") << "Improper number of parameters for the preshower ; using 95keV" << std::endl; mipValues_.clear(); mipValues_.resize(2,0.000095); } } LogInfo("FastCalorimetry") << " FrontLeakageProbability : " << pulledPadSurvivalProbability_ << std::endl; LogInfo("FastCalorimetry") << " GapLossProbability : " << crackPadSurvivalProbability_ << std::endl; // RespCorrP: p (momentum), ECAL and HCAL corrections = f(p) edm::ParameterSet CalorimeterParam = fastCalo.getParameter<edm::ParameterSet>("CalorimeterProperties"); rsp = CalorimeterParam.getParameter<std::vector<double> >("RespCorrP"); LogInfo("FastCalorimetry") << " RespCorrP (rsp) size " << rsp.size() << std::endl; if( rsp.size()%3 !=0 ) { LogInfo("FastCalorimetry") << " RespCorrP size is wrong -> no corrections applied !!!" << std::endl; p_knots.push_back(14000.); k_e.push_back (1.); k_h.push_back (1.); } else { for(unsigned i = 0; i < rsp.size(); i += 3) { LogInfo("FastCalorimetry") << "i = " << i/3 << " p = " << rsp [i] << " k_e(p) = " << rsp[i+1] << " k_e(p) = " << rsp[i+2] << std::endl; p_knots.push_back(rsp[i]); k_e.push_back (rsp[i+1]); k_h.push_back (rsp[i+2]); } } //FR edm::ParameterSet HCALparameters = fastCalo.getParameter<edm::ParameterSet>("HCAL"); optionHDSim_ = HCALparameters.getParameter<int>("SimOption"); hdGridSize_ = HCALparameters.getParameter<int>("GridSize"); hdSimMethod_ = HCALparameters.getParameter<int>("SimMethod"); //RF unfoldedMode_ = fastCalo.getUntrackedParameter<bool>("UnfoldedMode",false); }
void CalorimetryManager::reconstruct | ( | ) |
Definition at line 200 of file CalorimetryManager.cc.
References abs, clean(), gather_cfg::cout, debug_, EMShowerSimulation(), edm::EventID::event(), evtsToDebug_, spr::find(), relativeConstraints::geom, Calorimeter::getHcalGeometry(), CaloSubdetectorGeometry::getValidDetIds(), HcalDetId::hashed_index(), DetId::Hcal, HDShowerSimulation(), i, FSimEvent::id(), initialized_, LogDebug, MuonMipSimulation(), myCalorimeter_, mySimEvent, FSimTrack::noEndVertex(), FSimEvent::nTracks(), FSimTrack::onEcal(), FSimTrack::onHcal(), FSimTrack::onVFcal(), optionHDSim_, evf::utils::pid, CaloGeometryHelper::preshowerPresent(), FBaseSimEvent::print(), reconstructHCAL(), simulatePreshower_, theDetIds_, FBaseSimEvent::track(), and CoreSimTrack::type().
Referenced by FamosManager::reconstruct().
{ if(evtsToDebug_.size()) { std::vector<unsigned int>::const_iterator itcheck=find(evtsToDebug_.begin(),evtsToDebug_.end(),mySimEvent->id().event()); debug_=(itcheck!=evtsToDebug_.end()); if(debug_) mySimEvent->print(); } // Clear the content of the calorimeters if(!initialized_) { const CaloSubdetectorGeometry* geom=myCalorimeter_->getHcalGeometry(); for(int subdetn=1;subdetn<=4;++subdetn) { const std::vector<DetId>& ids(geom->getValidDetIds(DetId::Hcal,subdetn)); for (std::vector<DetId>::const_iterator i=ids.begin(); i!=ids.end(); i++) { HcalDetId myDetId(*i); unsigned hi=myDetId.hashed_index(); theDetIds_[hi]=myDetId; } } // Check if the preshower is really available if(simulatePreshower_ && !myCalorimeter_->preshowerPresent()) { std::cout << " WARNING " << std::endl; std::cout << " The preshower simulation has been turned on; but no preshower geometry is available " << std::endl; std::cout << " Disabling the preshower simulation " << std::endl; simulatePreshower_ = false; } initialized_=true; } clean(); LogInfo("FastCalorimetry") << "Reconstructing " << (int) mySimEvent->nTracks() << " tracks." << std::endl; for( int fsimi=0; fsimi < (int) mySimEvent->nTracks() ; ++fsimi) { FSimTrack& myTrack = mySimEvent->track(fsimi); int pid = abs(myTrack.type()); if (debug_) { LogDebug("FastCalorimetry") << " ===> pid = " << pid << std::endl; } // Check that the particle hasn't decayed if(myTrack.noEndVertex()) { // Simulate energy smearing for photon and electrons if ( pid == 11 || pid == 22 ) { if ( myTrack.onEcal() ) EMShowerSimulation(myTrack); else if ( myTrack.onVFcal() ) reconstructHCAL(myTrack); } // electron or photon else if (pid==13) { MuonMipSimulation(myTrack); } // Simulate energy smearing for hadrons (i.e., everything // but muons... and SUSY particles that deserve a special // treatment. else if ( pid < 1000000 ) { if ( myTrack.onHcal() || myTrack.onVFcal() ) { if(optionHDSim_ == 0 ) reconstructHCAL(myTrack); else HDShowerSimulation(myTrack); } } // pid < 1000000 } // myTrack.noEndVertex() } // particle loop // LogInfo("FastCalorimetry") << " Number of hits (barrel)" << EBMapping_.size() << std::endl; // LogInfo("FastCalorimetry") << " Number of hits (Hcal)" << HMapping_.size() << std::endl; // std::cout << " Nombre de hit (endcap)" << EEMapping_.size() << std::endl; } // reconstruct
void CalorimetryManager::reconstructECAL | ( | const FSimTrack & | track | ) | [private] |
Definition at line 516 of file CalorimetryManager.cc.
References gather_cfg::cout, debug_, cond::rpcobgas::detid, FSimTrack::ecalEntrance(), firedCellsHCAL_, RandomEngine::gaussShoot(), CaloGeometryHelper::getClosestCell(), HcalDetId::hashed_index(), HcalForward, HMapping_, FSimTrack::id(), FSimTrack::momentum(), myCalorimeter_, myHDResponse_, DetId::null(), FSimTrack::onEcal(), optionHDSim_, random, DetId::rawId(), HCALResponse::responseHCAL(), DetId::subdetId(), updateMap(), RawParticle::vertex(), and FSimTrack::vfcalEntrance().
{ if(debug_) { XYZTLorentzVector moment = track.momentum(); std::cout << "FASTEnergyReconstructor::reconstructECAL - " << std::endl << " eta " << moment.eta() << std::endl << " phi " << moment.phi() << std::endl << " et " << moment.Et() << std::endl; } int hit; bool central=track.onEcal()==1; //Reconstruct only electrons and photons. //deal with different conventions // ParticlePropagator 1 <-> Barrel // 2 <-> EC // whereas for Artur(this code): // 0 <-> Barrel // 1 <-> EC // 2 <-> VF XYZTLorentzVector trackPosition; if( track.onEcal() ) { hit=track.onEcal()-1; trackPosition=track.ecalEntrance().vertex(); } else { hit=2; trackPosition=track.vfcalEntrance().vertex(); } double pathEta = trackPosition.eta(); double pathPhi = trackPosition.phi(); double EGen = track.ecalEntrance().e(); double e=0.; double sigma=0.; // if full simulation and in HF, but without showering anyway... if(hit == 2 && optionHDSim_ == 2 ) { std::pair<double,double> response = myHDResponse_->responseHCAL(0, EGen, pathEta, 0); // last par.= 0 = e/gamma e = response.first; sigma = response.second; } double emeas = 0.; if(sigma>0.) emeas = random->gaussShoot(e,sigma); if(debug_) std::cout << "FASTEnergyReconstructor::reconstructECAL : " << " on-calo eta, phi = " << pathEta << " " << pathPhi << std::endl << " Egen = " << EGen << std::endl << " Eres = " << e << std::endl << " sigma = " << sigma << std::endl << " Emeas = " << emeas << std::endl; if(debug_) std::cout << "FASTEnergyReconstructor::reconstructECAL : " << " Track position - " << trackPosition.Vect() << " bool central - " << central << " hit - " << hit << std::endl; DetId detid; if( hit==2 ) detid = myCalorimeter_->getClosestCell(trackPosition.Vect(),false,central); // Check that the detid is HCAL forward HcalDetId hdetid(detid); if(!hdetid.subdetId()!=HcalForward) return; if(debug_) std::cout << "FASTEnergyReconstructor::reconstructECAL : " << " CellID - " << detid.rawId() << std::endl; if( hit != 2 || emeas > 0.) if(!detid.null()) { updateMap(hdetid.hashed_index(),emeas,track.id(),HMapping_,firedCellsHCAL_); } }
void CalorimetryManager::reconstructHCAL | ( | const FSimTrack & | myTrack | ) | [private] |
Definition at line 603 of file CalorimetryManager.cc.
References abs, debug_, firedCellsHCAL_, RandomEngine::gaussShoot(), CaloGeometryHelper::getClosestCell(), HCALResponse::getHCALEnergyResolution(), HCALResponse::getHCALEnergyResponse(), FSimTrack::hcalEntrance(), HMapping_, FSimTrack::id(), LogDebug, myCalorimeter_, myHDResponse_, FSimTrack::onHcal(), evf::utils::pid, random, HCALResponse::responseHCAL(), CoreSimTrack::type(), updateMap(), RawParticle::vertex(), and FSimTrack::vfcalEntrance().
Referenced by MuonMipSimulation(), and reconstruct().
{ int hit; int pid = abs(myTrack.type()); if (debug_) { LogDebug("FastCalorimetry") << " reconstructHCAL " << myTrack << std::endl; } // FSimTrack myTrack = mySimEvent.track(fsimi); // int pid=abs(myTrack.type()); // std::cout << "reconstructHCAL " << std::endl; XYZTLorentzVector trackPosition; if (myTrack.onHcal()) { trackPosition=myTrack.hcalEntrance().vertex(); hit = myTrack.onHcal()-1; } else { trackPosition=myTrack.vfcalEntrance().vertex(); hit = 2; } double pathEta = trackPosition.eta(); double pathPhi = trackPosition.phi(); // double pathTheta = trackPosition.theta(); double EGen = myTrack.hcalEntrance().e(); double e = 0.; double sigma = 0.; double emeas = 0.; if(pid == 13) { // std::cout << " We should not be here " << std::endl; std::pair<double,double> response = myHDResponse_->responseHCAL(0, EGen, pathEta, 2); // 2=muon emeas = response.first; if(debug_) LogDebug("FastCalorimetry") << "CalorimetryManager::reconstructHCAL - MUON !!!" << std::endl; } else if( pid == 22 || pid == 11) { std::pair<double,double> response = myHDResponse_->responseHCAL(0, EGen, pathEta, 0); // last par. = 0 = e/gamma e = response.first; // sigma = response.second; // emeas = random->gaussShoot(e,sigma); // // cout << "CalorimetryManager::reconstructHCAL - e/gamma !!!" << std::endl; if(debug_) LogDebug("FastCalorimetry") << "CalorimetryManager::reconstructHCAL - e/gamma !!!" << std::endl; } else { e = myHDResponse_->getHCALEnergyResponse(EGen,hit); sigma = myHDResponse_->getHCALEnergyResolution(EGen, hit); emeas = random->gaussShoot(e,sigma); } if(debug_) LogDebug("FastCalorimetry") << "CalorimetryManager::reconstructHCAL - on-calo " << " eta = " << pathEta << " phi = " << pathPhi << " Egen = " << EGen << " Eres = " << e << " sigma = " << sigma << " Emeas = " << emeas << std::endl; if(emeas > 0.) { DetId cell = myCalorimeter_->getClosestCell(trackPosition.Vect(),false,false); updateMap(HcalDetId(cell).hashed_index(), emeas, myTrack.id(),HMapping_,firedCellsHCAL_); } }
void CalorimetryManager::respCorr | ( | double | p | ) | [private] |
Definition at line 1423 of file CalorimetryManager.cc.
References debug_, ecorr, hcorr, i, k_e, k_h, LogDebug, and p_knots.
Referenced by HDShowerSimulation().
{ int sizeP = p_knots.size(); if(sizeP <= 1) { ecorr = 1.; hcorr = 1.; } else { int ip = -1; for (int i = 0; i < sizeP; i++) { if (p < p_knots[i]) { ip = i; break;} } if (ip == 0) { ecorr = k_e[0]; hcorr = k_h[0]; } else { if(ip == -1) { ecorr = k_e[sizeP-1]; hcorr = k_h[sizeP-1]; } else { double x1 = p_knots[ip-1]; double x2 = p_knots[ip]; double y1 = k_e[ip-1]; double y2 = k_e[ip]; if(x1 == x2) { // std::cout << " equal p_knots values!!! " << std::endl; } ecorr = (y1 + (y2 - y1) * (p - x1)/(x2 - x1)); y1 = k_h[ip-1]; y2 = k_h[ip]; hcorr = (y1 + (y2 - y1) * (p - x1)/(x2 - x1)); } } } if(debug_) LogDebug("FastCalorimetry") << " p, ecorr, hcorr = " << p << " " << ecorr << " " << hcorr << std::endl; }
void CalorimetryManager::updateMap | ( | uint32_t | cellid, |
float | energy, | ||
int | id, | ||
std::map< uint32_t, std::vector< std::pair< int, float > > > & | mymap | ||
) | [private] |
Definition at line 1369 of file CalorimetryManager.cc.
References relval_parameters_module::energy, and unfoldedMode_.
Referenced by EMShowerSimulation(), HDShowerSimulation(), MuonMipSimulation(), reconstructECAL(), and reconstructHCAL().
{ // std::cout << " updateMap " << std::endl; std::map<unsigned,std::vector<std::pair<int,float> > >::iterator cellitr; cellitr = mymap.find(cellid); if(!unfoldedMode_) id=0; if( cellitr==mymap.end()) { std::vector<std::pair<int,float> > myElement; myElement.push_back(std::pair<int,float> (id,energy)); mymap[cellid]=myElement; } else { if(!unfoldedMode_) { cellitr->second[0].second+=energy; } else cellitr->second.push_back(std::pair<int,float>(id,energy)); } }
void CalorimetryManager::updateMap | ( | int | hi, |
float | energy, | ||
int | id, | ||
std::vector< std::vector< std::pair< int, float > > > & | mymap, | ||
std::vector< int > & | firedCells | ||
) | [private] |
Definition at line 1392 of file CalorimetryManager.cc.
References relval_parameters_module::energy, findQualityFiles::size, and unfoldedMode_.
{ // Standard case first : one entry per cell if(!unfoldedMode_) { // if new entry, update the list if(mymap[hi].size()==0) { firedCells.push_back(hi); mymap[hi].push_back(std::pair<int,float>(0,energy)); } else mymap[hi][0].second+=energy; } else { // std::cout << "update map " << mymap[hi].size() << " " << hi << std::setw(8) << std::setprecision(6) << energy ; // std::cout << " " << mymap[hi][0].second << std::endl; // the minimal size is always 1 ; in this case, no push_back if(mymap[hi].size()==0) { // if(tid==0) std::cout << " Shit ! " << std::endl; firedCells.push_back(hi); } mymap[hi].push_back(std::pair<int,float>(tid,energy)); } }
Definition at line 144 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), and EMShowerSimulation().
const LandauFluctuationGenerator* CalorimetryManager::aLandauGenerator [private] |
Definition at line 143 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), and EMShowerSimulation().
double CalorimetryManager::crackPadSurvivalProbability_ [private] |
Definition at line 128 of file CalorimetryManager.h.
Referenced by EMShowerSimulation(), and readParameters().
bool CalorimetryManager::debug_ [private] |
Definition at line 116 of file CalorimetryManager.h.
Referenced by EMShowerSimulation(), HDShowerSimulation(), MuonMipSimulation(), readParameters(), reconstruct(), reconstructECAL(), reconstructHCAL(), and respCorr().
std::vector<std::vector<std::pair<int,float> > > CalorimetryManager::EBMapping_ [private] |
Definition at line 104 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), clean(), EMShowerSimulation(), HDShowerSimulation(), loadFromEcalBarrel(), and MuonMipSimulation().
double CalorimetryManager::ecorr [private] |
Definition at line 155 of file CalorimetryManager.h.
Referenced by HDShowerSimulation(), and respCorr().
std::vector<std::vector<std::pair<int,float> > > CalorimetryManager::EEMapping_ [private] |
Definition at line 105 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), clean(), EMShowerSimulation(), HDShowerSimulation(), loadFromEcalEndcap(), and MuonMipSimulation().
std::map<uint32_t,std::vector<std::pair<int,float> > > CalorimetryManager::ESMapping_ [private] |
Definition at line 107 of file CalorimetryManager.h.
Referenced by clean(), EMShowerSimulation(), and loadFromPreshower().
std::vector<unsigned int> CalorimetryManager::evtsToDebug_ [private] |
Definition at line 117 of file CalorimetryManager.h.
Referenced by readParameters(), and reconstruct().
std::vector<int> CalorimetryManager::firedCellsEB_ [private] |
Definition at line 109 of file CalorimetryManager.h.
Referenced by clean(), EMShowerSimulation(), HDShowerSimulation(), loadFromEcalBarrel(), and MuonMipSimulation().
std::vector<int> CalorimetryManager::firedCellsEE_ [private] |
Definition at line 110 of file CalorimetryManager.h.
Referenced by clean(), EMShowerSimulation(), HDShowerSimulation(), loadFromEcalEndcap(), and MuonMipSimulation().
std::vector<int> CalorimetryManager::firedCellsHCAL_ [private] |
Definition at line 111 of file CalorimetryManager.h.
Referenced by clean(), EMShowerSimulation(), HDShowerSimulation(), loadFromHcal(), MuonMipSimulation(), reconstructECAL(), and reconstructHCAL().
int CalorimetryManager::gridSize_ [private] |
Definition at line 133 of file CalorimetryManager.h.
Referenced by EMShowerSimulation(), and readParameters().
double CalorimetryManager::hcorr [private] |
Definition at line 156 of file CalorimetryManager.h.
Referenced by HDShowerSimulation(), and respCorr().
int CalorimetryManager::hdGridSize_ [private] |
Definition at line 137 of file CalorimetryManager.h.
Referenced by HDShowerSimulation(), MuonMipSimulation(), and readParameters().
int CalorimetryManager::hdSimMethod_ [private] |
Definition at line 137 of file CalorimetryManager.h.
Referenced by HDShowerSimulation(), and readParameters().
std::vector<std::vector<std::pair<int,float> > > CalorimetryManager::HMapping_ [private] |
Definition at line 106 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), clean(), EMShowerSimulation(), HDShowerSimulation(), loadFromHcal(), MuonMipSimulation(), reconstructECAL(), and reconstructHCAL().
bool CalorimetryManager::initialized_ [private] |
Definition at line 147 of file CalorimetryManager.h.
Referenced by reconstruct().
std::vector<double> CalorimetryManager::k_e [private] |
Definition at line 153 of file CalorimetryManager.h.
Referenced by readParameters(), and respCorr().
std::vector<double> CalorimetryManager::k_h [private] |
Definition at line 154 of file CalorimetryManager.h.
Referenced by readParameters(), and respCorr().
std::vector<double> CalorimetryManager::mipValues_ [private] |
Definition at line 132 of file CalorimetryManager.h.
Referenced by EMShowerSimulation(), and readParameters().
std::vector<FSimTrack> CalorimetryManager::muonSimTracks [private] |
Definition at line 158 of file CalorimetryManager.h.
Referenced by clean(), loadMuonSimTracks(), and MuonMipSimulation().
Definition at line 95 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), EMShowerSimulation(), getCalorimeter(), HDShowerSimulation(), MuonMipSimulation(), reconstruct(), reconstructECAL(), reconstructHCAL(), and ~CalorimetryManager().
RawParticle CalorimetryManager::myElec [private] |
A few pointers to save time.
Definition at line 122 of file CalorimetryManager.h.
Referenced by EMShowerSimulation().
HCALResponse* CalorimetryManager::myHDResponse_ [private] |
Definition at line 99 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), HDShowerSimulation(), reconstructECAL(), reconstructHCAL(), and ~CalorimetryManager().
Histos* CalorimetryManager::myHistos [private] |
Definition at line 97 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), and ~CalorimetryManager().
HSParameters* CalorimetryManager::myHSParameters_ [private] |
Definition at line 100 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), and HDShowerSimulation().
RawParticle CalorimetryManager::myPart [private] |
Definition at line 124 of file CalorimetryManager.h.
Referenced by EMShowerSimulation(), HDShowerSimulation(), and MuonMipSimulation().
RawParticle CalorimetryManager::myPosi [private] |
Definition at line 123 of file CalorimetryManager.h.
Referenced by EMShowerSimulation().
FSimEvent* CalorimetryManager::mySimEvent [private] |
Definition at line 94 of file CalorimetryManager.h.
Referenced by reconstruct().
std::vector< std::pair< int, float > > CalorimetryManager::myZero_ [static, private] |
std::vector<std::pair<int,float> > (1,std::pair<int,float>(0,0.))
Definition at line 146 of file CalorimetryManager.h.
int CalorimetryManager::optionHDSim_ [private] |
Definition at line 137 of file CalorimetryManager.h.
Referenced by HDShowerSimulation(), readParameters(), reconstruct(), and reconstructECAL().
std::vector<double> CalorimetryManager::p_knots [private] |
Definition at line 152 of file CalorimetryManager.h.
Referenced by readParameters(), and respCorr().
double CalorimetryManager::pulledPadSurvivalProbability_ [private] |
Definition at line 127 of file CalorimetryManager.h.
Referenced by EMShowerSimulation(), and readParameters().
double CalorimetryManager::radiusFactor_ [private] |
Definition at line 130 of file CalorimetryManager.h.
Referenced by EMShowerSimulation(), and readParameters().
std::vector<double> CalorimetryManager::radiusPreshowerCorrections_ [private] |
Definition at line 131 of file CalorimetryManager.h.
Referenced by EMShowerSimulation(), and readParameters().
const RandomEngine* CalorimetryManager::random [private] |
Definition at line 142 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), EMShowerSimulation(), HDShowerSimulation(), MuonMipSimulation(), reconstructECAL(), and reconstructHCAL().
double CalorimetryManager::RCFactor_ [private] |
Definition at line 135 of file CalorimetryManager.h.
Referenced by EMShowerSimulation(), and readParameters().
std::vector<double> CalorimetryManager::rsp [private] |
Definition at line 151 of file CalorimetryManager.h.
Referenced by readParameters().
double CalorimetryManager::RTFactor_ [private] |
Definition at line 135 of file CalorimetryManager.h.
Referenced by EMShowerSimulation(), and readParameters().
bool CalorimetryManager::simulatePreshower_ [private] |
Definition at line 138 of file CalorimetryManager.h.
Referenced by EMShowerSimulation(), readParameters(), and reconstruct().
double CalorimetryManager::spotFraction_ [private] |
Definition at line 129 of file CalorimetryManager.h.
Referenced by readParameters().
Definition at line 166 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), and HDShowerSimulation().
std::vector<double> CalorimetryManager::theCoreIntervals_ [private] |
Definition at line 134 of file CalorimetryManager.h.
Referenced by EMShowerSimulation(), and readParameters().
std::vector<DetId> CalorimetryManager::theDetIds_ [private] |
Definition at line 115 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), loadFromHcal(), and reconstruct().
Definition at line 159 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), MuonMipSimulation(), and ~CalorimetryManager().
Definition at line 160 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), MuonMipSimulation(), and ~CalorimetryManager().
Definition at line 164 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), and HDShowerSimulation().
Definition at line 163 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), HDShowerSimulation(), and ~CalorimetryManager().
Definition at line 165 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), and HDShowerSimulation().
std::vector<double> CalorimetryManager::theTailIntervals_ [private] |
Definition at line 134 of file CalorimetryManager.h.
Referenced by EMShowerSimulation(), and readParameters().
bool CalorimetryManager::unfoldedMode_ [private] |
Definition at line 119 of file CalorimetryManager.h.
Referenced by CalorimetryManager(), loadFromEcalBarrel(), loadFromEcalEndcap(), loadFromHcal(), loadFromPreshower(), readParameters(), and updateMap().