|
ATLAS Offline Software
|
Go to the documentation of this file.
9 #include "Identifier/Identifier.h"
12 #include "CaloGeoHelpers/CaloSampling.h"
20 #include "CLHEP/Units/SystemOfUnits.h"
31 , m_ntsvc(
"THistSvc/THistSvc",
name)
36 ATH_MSG_INFO (
"(EventReader) Initializing conditions...");
73 ATH_MSG_ERROR(
" Unable to retrieve CaloIdManager from DetectoreStore");
74 return StatusCode::FAILURE;
84 m_Tree =
new TTree(
"dumpedData",
"dumpedData");
85 m_secondTree =
new TTree(
"lumiblockData",
"lumiblockData");
93 return StatusCode::FAILURE;
97 return StatusCode::FAILURE;
104 return StatusCode::FAILURE;
107 return StatusCode::SUCCESS;
113 const EventContext& ctx = getContext();
174 return StatusCode::SUCCESS;
197 return StatusCode::FAILURE;
214 std::string eSelectionText =
"";
218 else eSelectionText =
"Number of myElectronsSelection tagAndProbe Zee candidates: ";
223 ATH_MSG_INFO(
"This event has no selected electrons! Cleanning event variables and skipping writing to NTuple...");
225 return StatusCode::SUCCESS;
243 return StatusCode::SUCCESS;
250 int electronIndex = 0;
253 const auto& clusLinks = elec->caloClusterLinks();
256 for (
const auto& clusLink : clusLinks){
262 for (
auto assocCl : assocCls){
263 ATH_MSG_DEBUG (
"AssociatedTopoCluster " <<
m_c_clusterIndexCounter <<
": e: "<< assocCl->e() <<
", eta: " << assocCl->eta() <<
", phi: " << assocCl->phi() <<
". Total size: " << assocCl->numberCells() <<
"/ "<< assocCl->clusterSize() <<
", etaBE: " << assocCl->etaBE(2) <<
", numberCellsInSampling: " << assocCl->numberCellsInSampling(
CaloSampling::EMB2) <<
", eta size: " << assocCl->etasize(
CaloSampling::EMB2) <<
", phi size: " << assocCl->phisize(
CaloSampling::EMB2) );
286 return StatusCode::SUCCESS;
304 return StatusCode::SUCCESS;
309 float track_p = (
electron->trackParticle())->
pt()*std::cosh((
electron->trackParticle())->eta());
310 float eoverp = (
electron->caloCluster())->
e()/track_p;
313 m_el_et->push_back(electronEt);
318 return StatusCode::SUCCESS;
328 float bestDeltaZ0Sin = 9999.0, bestZfromVertex = 9999.0, bestXFromVertex = 9999.0, bestYFromVertex = 9999.0, bestDeltaZ0 = 9999.0;
329 double bestD0Sig = 9999.0;
331 bool isAnyClosestVtx =
false;
335 float zFromVertex = vxIter->z();
336 float delta_z0 = fabs(trackElectron->
z0() + trackElectron->
vz() - zFromVertex);
337 float delta_z0_sin = delta_z0 *
sin(trackElectron->
theta());
342 isAnyClosestVtx =
true;
344 ATH_MSG_DEBUG (
"(dumpPrimVertexAssocToElectron) Vertex "<< vtxCounter <<
": This is a primary vertex. |delta_z0_sin| < 0.5 mm ("<< delta_z0_sin <<
"). |d0sig| < 5 (" << d0sig <<
")");
345 if ( (fabs(delta_z0_sin) < fabs(bestDeltaZ0Sin) ) && (fabs(d0sig) < fabs(bestD0Sig)) )
348 ATH_MSG_DEBUG (
"(dumpPrimVertexAssocToElectron) New best associated Vertex. Vertex "<< vtxCounter <<
": |delta_z0_sin| < 0.5 mm ("<< delta_z0_sin <<
"). |d0sig| < 5 (" << d0sig <<
")");
350 bestDeltaZ0Sin = delta_z0_sin;
353 bestXFromVertex = vxIter->x();
354 bestYFromVertex = vxIter->y();
355 bestZfromVertex = zFromVertex;
356 bestDeltaZ0 = delta_z0;
362 if (isAnyClosestVtx){
363 m_vtx_x->push_back(bestXFromVertex);
364 m_vtx_y->push_back(bestYFromVertex);
365 m_vtx_z->push_back(bestZfromVertex);
371 ATH_MSG_ERROR(
"A pre-selected electron track has no closest vertex to dump! (weird?)");
376 return StatusCode::SUCCESS;
383 ATH_MSG_INFO (
"LB_data: lbLuminosityPerBCIDVector stored into ntuple." );
388 return StatusCode::SUCCESS;
401 return StatusCode::SUCCESS;
407 auto electronSelectionCnt = std::make_unique<ConstDataVector<xAOD::ElectronContainer>> (
SG::VIEW_ELEMENTS);
408 auto TagAndProbeElectronSelectionCnt = std::make_unique<ConstDataVector<xAOD::ElectronContainer>> (
SG::VIEW_ELEMENTS);
412 if (!electronsCnt.isValid()) {
414 return StatusCode::FAILURE;
418 for (
auto el : *electronsCnt){
424 electronSelectionCnt->push_back(
el );
431 ATH_CHECK (
evtStore()->record( electronSelectionCnt.release(),
"MySelectedElectrons"));
432 return StatusCode::SUCCESS;
435 if (electronSelectionCnt->size() < 2){
436 ATH_MSG_DEBUG(
"(TagAndProbe) Not enough Electrons for T&P (nElectrons="<<electronSelectionCnt->size() <<
"). Storing "<<electronSelectionCnt->size()<<
" electron on MyTagAndProbeElectrons container. This will not be dumped!");
437 ATH_CHECK (
evtStore()->record( TagAndProbeElectronSelectionCnt.release(),
"MyTagAndProbeElectrons"));
438 return StatusCode::SUCCESS;
448 if (elTag==elProbe)
continue;
451 if ( elTag->charge() == elProbe->charge() )
continue;
452 ATH_MSG_DEBUG (
"(TagAndProbe) Electron Pair Charges are opposite! Good.");
457 el1.SetPtEtaPhiE(elTag->pt(), elTag->trackParticle()->eta(), elTag->trackParticle()->phi(), elTag->e());
458 el2.SetPtEtaPhiE(elProbe->pt(), elProbe->trackParticle()->eta(), elProbe->trackParticle()->phi(), elProbe->e());
460 float tpPairMass = (el1 + el2).M();
463 ATH_MSG_DEBUG (
"(TagAndProbe) Electron pair not in Z mass window.");
467 ATH_MSG_INFO (
"(TagAndProbe) Electron-positron pair are in Z mass window.");
470 ATH_MSG_DEBUG (
" Probe electron not passed in Goodnes of Probe test.");
473 ATH_MSG_INFO(
"(TagAndProbe) Electron is a good probe.");
476 ATH_MSG_INFO (
"TAG: pt="<< elTag->pt() <<
" e="<< elTag->e());
477 ATH_MSG_INFO (
"PRO: pt="<< elProbe->pt() <<
" e="<< elProbe->e());
478 ATH_MSG_INFO (
"Zee: M="<< tpPairMass <<
" E="<< (el1 + el2).
E());
479 m_zee_M->push_back((el1 + el2).M());
480 m_zee_E->push_back((el1 + el2).
E());
482 m_zee_px->push_back((el1 + el2).Px());
483 m_zee_py->push_back((el1 + el2).Py());
484 m_zee_pz->push_back((el1 + el2).Pz());
485 m_zee_T->push_back((el1 + el2).
T());
490 TagAndProbeElectronSelectionCnt->push_back( (elTag) );
496 ATH_CHECK (
evtStore()->record( TagAndProbeElectronSelectionCnt.release(),
"MyTagAndProbeElectrons"));
497 return StatusCode::SUCCESS;
503 auto elecCandidates = std::make_unique<ConstDataVector<xAOD::TruthParticleContainer>> (
SG::VIEW_ELEMENTS);
505 if (truthParticleCnt->
size() == 0)
ATH_MSG_INFO(
"truthParticleCnt is empty!");
510 elecCandidates->push_back( truth );
512 ATH_MSG_INFO(
"(TruthParticle) Reco pt="<< recElectron->pt()<<
" , Truth pt= "<< truth->
pt());
516 if (elecCandidates->size() > 0)
ATH_MSG_INFO(
"(TruthParticle) Size of elecCandidates is "<< elecCandidates->size()<<
" !");
521 TLorentzVector elecCandidateLorentz;
522 elecCandidateLorentz.SetPtEtaPhiE(elecSelected->pt(),elecSelected->eta(),elecSelected->phi(),elecSelected->e());
541 ATH_CHECK (
evtStore()->record( elecCandidates.release(),
"MyMatchedTruthElectrons"));
542 return StatusCode::SUCCESS;
554 std::bitset<200000> larClusteredDigits;
555 std::vector<size_t> caloHashMap;
556 std::vector<HWIdentifier> channelHwidInClusterMap;
557 std::vector<int> cellIndexMap;
558 std::vector<float> channelIndexMap;
559 std::vector<int> cellLayerMap;
561 std::vector<double> clusCellEtaMap;
562 std::vector<double> clusCellPhiMap;
564 std::vector<double> channelEnergyInClusterMap;
565 std::vector<double> channelTimeInClusterMap;
566 std::vector<double> channelEtaInClusterMap;
567 std::vector<double> channelPhiInClusterMap;
568 std::vector<float> channelEffectiveSigmaClusterMap;
569 std::vector<float> channelNoiseClusterMap;
571 std::vector<int> channelCaloRegionMap;
572 std::vector<bool> badChannelMap;
575 double clusEta =
cl->eta();
576 double clusPhi =
cl->phi();
577 double clusEt =
cl->et();
578 double clusPt =
cl->pt();
579 double clusTime =
cl->time();
581 ATH_MSG_DEBUG (
" (Cluster) Cluster: "<< clusIndex <<
", numberCells: " <<
cl->numberCells() <<
", e = " <<
cl->e() <<
", time = "<< clusTime <<
", pt = " <<
cl->pt() <<
" , eta = " <<
cl->eta() <<
" , phi = " <<
cl->phi());
584 auto itrCellsBegin =
cl->cell_begin();
585 auto itrCellsEnd =
cl->cell_end();
588 for (
auto itCells=itrCellsBegin; itCells != itrCellsEnd; ++itCells){
595 double eneCell =
cell->energy();
596 double timeCell =
cell->time();
597 double etaCell =
cell->eta();
598 double phiCell =
cell->phi();
599 int gainCell =
cell->gain();
601 bool badCell =
cell->badcell();
602 bool isTile =
cell->caloDDE()->is_tile();
603 bool isLAr =
cell->caloDDE()->is_lar_em();
604 bool isLArFwd =
cell->caloDDE()->is_lar_fcal();
605 bool isLArHEC =
cell->caloDDE()->is_lar_hec();
606 double detaCell =
cell->caloDDE()->deta();
607 double dphiCell =
cell->caloDDE()->dphi();
616 if (isTile)
continue;
619 else if ((isLAr) || (isLArFwd) || (isLArHEC)) {
622 index = (size_t) (chidHash);
624 if (larClusteredDigits.test(
index)) {
625 ATH_MSG_ERROR (
" ##### (Cluster) Error LAr: Conflict index position in Channel map. Position was already filled in this event. Skipping the cell of index: " <<
index <<
" and hwid: " << chhwid <<
". Cell_E/t="<<
cell->energy() <<
"/"<<
cell->time() <<
". Eta/Phi: "<<
cell->eta() <<
"/" <<
cell->phi());
629 ATH_MSG_INFO (
" (Cluster)(LAr) Cell "<< cellNum <<
" in cluster is a bad LAr channel! Skipping the cell.");
632 larClusteredDigits.set(
index);
633 caloHashMap.push_back(
index);
635 clusCellEtaMap.push_back(etaCell);
636 clusCellPhiMap.push_back(phiCell);
637 cellLayerMap.push_back(layerCell);
639 channelHwidInClusterMap.push_back(chhwid);
640 channelTimeInClusterMap.push_back(timeCell);
641 channelEnergyInClusterMap.push_back(eneCell);
642 channelCaloRegionMap.push_back(caloRegionIndex);
643 channelEffectiveSigmaClusterMap.push_back(effSigma);
644 channelNoiseClusterMap.push_back(cellNoise);
653 ATH_MSG_ERROR (
" ####### (Cluster) ERROR ! No CaloCell region was found!");
660 const double clusterDphiRaw = clusPhi - phiCell;
661 double cluster_dphi = 0.;
663 if (clusterDphiRaw < -
pi) {
664 cluster_dphi =
twopi + clusterDphiRaw;
666 else if (clusterDphiRaw >
pi) {
667 cluster_dphi = clusterDphiRaw -
twopi;
670 cluster_dphi = clusterDphiRaw;
709 if (larClusteredDigits.any()){
719 for (
unsigned int k=0 ;
k < channelHwidInClusterMap.size() ;
k++){
720 double cell_total_ene = 0.0;
721 double cell_total_eneCalib = 0.0;
722 double cell_hit_tof = -999.0;
724 double hit_time = 0.;
725 float hit_fSampCalib = 1.;
726 int hit_sampling = 0;
727 size_t hit_index1 = 0;
728 bool thereIsOneHitToDump =
false;
729 std::vector<double> hitEnergiesFromMap;
730 std::vector<double> hitTimesFromMap ;
732 for (
const LArHit* hit : *larHitCnt){
736 hit_index1 = (size_t) (hit_idHash);
738 if (larClusteredDigits.test(hit_index1)){
739 if (channelHwidInClusterMap[
k]==hit_hwid){
741 hit_ene = hit->energy();
742 hit_time = hit->time();
745 if (hit_index1 <
m_ncell && fabs(hit_time) < 25.){
746 hitEnergiesFromMap.push_back(hit_ene);
747 hitTimesFromMap.push_back(hit_time);
749 thereIsOneHitToDump =
true;
751 ATH_MSG_DEBUG (
"(HITS) Match in "<<
k <<
"/"<< channelHwidInClusterMap.size() <<
"! Sampling "<< hit_sampling <<
", Cell (clus): "<< channelIndexMap[
k] <<
" ("<< clusIndex <<
"), ID (mapHwid / hwid / hash ): "<< hit_cellID <<
" ("<< channelHwidInClusterMap[
k] <<
" / "<< hit_hwid <<
" / "<< hit_index1 <<
"), hitEne: "<< hit_ene <<
", hitTime: "<< hit_time <<
", m_fSampl: "<< hit_fSampCalib <<
". eta="<< clusCellEtaMap[
k]<<
", phi="<<clusCellPhiMap[
k]<<
".");
758 if (thereIsOneHitToDump){
759 for (
auto hitE : hitEnergiesFromMap){
760 cell_total_ene += hitE;
761 cell_total_eneCalib += hitE / hit_fSampCalib;
763 cell_hit_tof = *std::min_element(hitTimesFromMap.begin(), hitTimesFromMap.end());
777 ATH_MSG_DEBUG(
"(HITS) Hit from cell "<<
k <<
"/"<< channelHwidInClusterMap.size() <<
" not found! Sampling "<< hit_sampling <<
", Cell (clus): "<< channelIndexMap[
k] <<
" ("<< clusIndex <<
"), mapHwid: "<< channelHwidInClusterMap[
k]<<
". eta="<< clusCellEtaMap[
k]<<
", phi="<<clusCellPhiMap[
k]<<
".");
779 hitEnergiesFromMap.clear();
780 hitTimesFromMap.clear();
789 for (
const LArDigit* dig : *LarDigCnt) {
792 size_t index = (size_t) (idHash);
794 if (larClusteredDigits.test(
index)) {
795 for (
unsigned int k=0 ;
k < channelHwidInClusterMap.size() ;
k++){
796 if (channelHwidInClusterMap[
k]==channelID){
799 std::vector<short> larDigitShort = dig->samples();
800 std::vector<float> larDigit( larDigitShort.begin(), larDigitShort.end() );
804 const int digGain = dig->gain();
808 std::vector<double> ofca, ofcb, shape, shapeDer;
810 for (
size_t k=0;
k < ofc_a.size();
k++) ofca.push_back((
double) ofc_a[
k]);
811 for (
size_t k=0;
k < ofc_b.size();
k++) ofcb.push_back((
double) ofc_b[
k]);
821 for (
size_t k=0;
k < sig_shape.size();
k++) shape.push_back((
double) sig_shape[
k]);
822 for (
size_t k=0;
k < sig_shapeDer.size();
k++) shapeDer.push_back((
double) sig_shapeDer[
k]);
824 float offl_EneRescaler = 1.0;
826 if (dig_cell_hashId < m_EneRescaler->getNChans()){
857 std::vector<int> chInfo {barrelEc,
posNeg, feedThr, slot, chn } ;
869 ATH_MSG_INFO (
"(Cluster) In DumpLAr Digits: ReadOutIndex "<< channelIndexMap[
k] <<
". HwId " << channelID);
870 ATH_MSG_INFO (
"(Cluster) In DumpLAr Digits: ReadOutIndex "<< channelIndexMap[
k] <<
" HwId.get_compact() " << channelID.
get_compact());
873 ATH_MSG_INFO(
"(Cluster) LAr OFC timeOffset: "<<
m_ofcs->
timeOffset(digId, digGain) <<
", dig->hardwareID: " << digId <<
", dig->channelID: "<< channelID);
874 ATH_MSG_INFO(
"\tOFCa ("<< ofca.size()<<
"): ["<< ofca[0] <<
", " << ofca[1] <<
", " << ofca[2]<<
", " << ofca[3] <<
"]");
875 ATH_MSG_INFO(
"\tOFCb ("<< ofcb.size()<<
"): ["<< ofcb[0] <<
", " << ofcb[1] <<
", " << ofcb[2]<<
", " << ofcb[3] <<
"]");
877 ATH_MSG_DEBUG (
"(Cluster) In DumpLAr Digits: ReadOutIndex "<< channelIndexMap[
k] <<
". HwId (B_EC/P_N/FeedTr/slot/ch) " << channelID <<
" (" << barrelEc <<
"/" <<
posNeg <<
"/"<< feedThr <<
"/" << slot <<
"/" << chn <<
". Dig (float): " << larDigit);
891 if (larClusteredDigits.any()) {
899 size_t index =
static_cast<size_t>(chHwidHash);
901 if (larClusteredDigits.test(
index)){
902 for (
unsigned int k=0 ;
k < channelHwidInClusterMap.size() ;
k++){
903 if (channelHwidInClusterMap[
k] == channelID){
906 int rawEnergy = LArChannel.energy();
907 int rawTime = LArChannel.time();
908 uint16_t rawQuality = LArChannel.quality();
909 int provenance =
static_cast<int>(LArChannel.provenance());
910 float rawEnergyConv =
static_cast<float>(rawEnergy);
911 float rawTimeConv =
static_cast<float>(rawTime);
912 float rawQualityConv =
static_cast<float>(rawQuality);
920 std::vector<int> chInfo {barrelEc,
posNeg, feedThr, slot, chn } ;
923 if ( (rawEnergy != rawEnergyConv) || (rawTime != rawTimeConv) || (rawQuality != rawQualityConv) ){
924 ATH_MSG_ERROR (
" ###### (Cluster) LAR RAW CHANNEL: Value conversion from int to float of amplitude, time or quality (uint16_t) had changed its actual value !!!");
946 ATH_MSG_INFO (
"(Cluster) In DumpLAr Raw "<< channelIndexMap[
k] <<
": hardwareID (B_EC/P_N/feedThr/slot/chn): " << hardwareID <<
"(" << barrelEc <<
"/" <<
posNeg <<
"/" << feedThr <<
"/" << slot <<
"/" << chn <<
")" <<
". Energy: " << rawEnergyConv <<
". Time: " << rawTimeConv <<
". Provenance: " << provenance <<
". Quality: " << rawQualityConv <<
" ecut (DSPThr) = " <<
m_run2DSPThresh->tQThr(channelID));
949 ATH_MSG_INFO (
"(Cluster) In DumpLAr Raw "<< channelIndexMap[
k] <<
": hardwareID (B_EC/P_N/feedThr/slot/chn): " << hardwareID <<
"(" << barrelEc <<
"/" <<
posNeg <<
"/" << feedThr <<
"/" << slot <<
"/" << chn <<
")" <<
". Energy: " << rawEnergyConv <<
". Time: " << rawTimeConv <<
". Provenance: " << provenance <<
". Quality: " << rawQualityConv);
959 larClusteredDigits.reset();
963 channelHwidInClusterMap.clear();
964 cellIndexMap.clear();
965 cellLayerMap.clear();
966 clusCellEtaMap.clear();
967 clusCellPhiMap.clear();
968 channelIndexMap.clear();
969 channelEnergyInClusterMap.clear();
970 channelTimeInClusterMap.clear();
971 channelEtaInClusterMap.clear();
972 channelPhiInClusterMap.clear();
973 channelEffectiveSigmaClusterMap.clear();
974 channelNoiseClusterMap.clear();
975 channelCaloRegionMap.clear();
981 ATH_MSG_INFO (
" (Cluster) ALL Digits from the cluster were dumped successfully!");}
986 return StatusCode::SUCCESS;
994 return StatusCode::SUCCESS;
def retrieve(aClass, aKey=None)
Gaudi::Property< bool > m_isMC
std::vector< double > * m_zee_E
std::vector< float > * m_el_Phi
std::vector< float > * m_el_deltae
virtual float pedestal(const HWIdentifier &id, int gain) const =0
virtual StatusCode dumpOfflineSS(const xAOD::Electron *electron)
std::vector< float > * m_el_eoverp
const std::vector< float > & lbLuminosityPerBCIDVector() const
Gaudi::Property< bool > m_noBadCells
std::vector< double > * m_zee_pz
std::vector< std::vector< double > > * m_c_channelShapeDer
const LArVectorProxy ADC2MEV(const HWIdentifier &id, int gain) const
T getData(const unsigned int channel, const unsigned int adc, const unsigned int idx) const
Returns a single T belonging to a channel/gain.
void bookBranches(TTree *tree)
SG::ReadCondHandleKey< ILArPedestal > m_pedestalKey
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthParticleCntSgKey
std::vector< double > * m_c_clusterPhi
IdentifierHash channel_Hash(HWIdentifier channelId) const
Create channel_hash from channel_Id.
float getEffectiveSigma(const Identifier id, const int gain, const float energy) const
SG::ReadHandleKey< LArDigitContainer > m_larDigitCntSgKey
std::vector< const xAOD::CaloCluster * > getAssociatedTopoClusters(const xAOD::CaloCluster *cluster)
Return a vector of all the topo clusters associated with the egamma cluster.
std::vector< int > * m_c_cellRegion
virtual StatusCode execute() override
bool trackSelectionElectrons(const xAOD::Electron *electron, SG::ReadHandle< xAOD::VertexContainer > &primVertexCnt, SG::ReadHandle< xAOD::EventInfo > &ei)
std::vector< float > * m_mc_part_m
std::vector< int > * m_c_clusterIndex_chLvl
uint64_t eventNumber() const
The current event's event number.
std::vector< float > * m_mc_part_energy
const LArEM_ID * m_larem_id
std::vector< float > * m_c_rawChannelAmplitude
std::vector< unsigned int > * m_hits_hash
std::vector< float > * m_c_channelPed
std::vector< float > * m_mc_vert_z
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
ServiceHandle< ITHistSvc > m_ntsvc
std::vector< float > * m_c_rawChannelProv
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoSgKey
Gaudi::Property< bool > m_printCellsClus
std::vector< std::vector< int > > * m_c_channelChInfo
virtual StatusCode initialize() override
std::vector< bool > * m_c_channelBad
std::vector< float > * m_el_fracs1
std::vector< float > * m_c_channelMinBiasAvg
float vz() const
The z origin for the parameters.
SG::ReadCondHandleKey< LArADC2MeV > m_adc2MeVKey
Gaudi::Property< bool > m_doLArEMBHitsDump
const LArEM_ID * getEM_ID(void) const
virtual OFCRef_t OFC_b(const HWIdentifier &id, int gain, int tbin=0) const =0
double d0significance(const xAOD::TrackParticle *tp, double d0_uncert_beam_spot_2)
std::vector< float > * m_c_channelOfflHVScale
virtual ShapeRef_t ShapeDer(const HWIdentifier &id, int gain, int tbin=0, int mode=0) const =0
std::vector< double > * m_c_cellToClusterDPhi
std::vector< std::vector< double > > * m_c_channelOFCa
const LArADC2MeV * m_adc2MeVs
const ILArPedestal * m_peds
int slot(const HWIdentifier id) const
Return the slot number of a hardware cell identifier: slot = [1,15] Slot-ID in top part of the crat...
std::vector< double > * m_hits_cellPhi
float z0() const
Returns the parameter.
virtual StatusCode dumpClusterCells(const xAOD::CaloCluster *cl, int clusIndex, const EventContext &ctx)
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
int m_c_clusterIndexCounter
value_type get_compact() const
Get the compact id.
float beamPosSigmaX() const
The width of the beam spot in the X direction.
const ILArMinBiasAverage * m_minBiasAvgs
std::vector< int > * m_mc_vert_status
int calo_sample(const Identifier id) const
returns an int taken from Sampling enum and describing the subCalo to which the Id belongs.
std::vector< int > * m_c_electronIndex_clusterLvl
Gaudi::Property< float > m_maxZeeMassTP
std::vector< float > * m_el_weta2
bool empty() const
Test if the key is blank.
std::vector< double > * m_c_cellPhi
Gaudi::Property< bool > m_doTruthPartDump
float getNoise(const IdentifierHash h, const int gain) const
Accessor by IdentifierHash and gain.
int barrel_ec(const HWIdentifier id) const
Return the position barrel or endcap of a hardware cell identifier: barrel_ec = [0,...
std::vector< double > * m_c_channelTime
std::vector< int > * m_hits_clusterChannelIndex
std::vector< double > * m_c_clusterPt
const LArOnOffIdMapping * m_larCabling
std::vector< double > * m_c_cellEta
@ LAr
The LAr calorimeter.
std::vector< float > * m_el_m
std::vector< float > * m_mc_vert_phi
value_type get_compact() const
Get the compact id.
@ wtots1
shower width is determined in a window detaxdphi = 0,0625 ×~0,2, corresponding typically to 20 strips...
std::vector< int > * m_hits_clusterIndex_chLvl
std::vector< float > * m_el_f3
uint32_t runNumber() const
The current event's run number.
SG::ReadHandleKey< xAOD::VertexContainer > m_primVertSgKey
float m_e_outOfTimePileUp
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
@ Error
The sub-detector issued an error.
Gaudi::Property< bool > m_doClusterDump
std::vector< float > * m_c_channelDSPThreshold
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
std::vector< double > * m_c_cellEnergy
std::vector< float > * m_hits_sampFrac
std::vector< double > * m_hits_time
std::vector< float > * m_mc_part_eta
@ f3
fraction of energy reconstructed in 3rd sampling
const LArFCAL_ID * m_larfcal_id
virtual StatusCode dumpZeeCut(SG::ReadHandle< xAOD::EventInfo > &ei, SG::ReadHandle< xAOD::VertexContainer > &primVertexCnt, const EventContext &ctx)
bool eOverPElectron(const xAOD::Electron *electron)
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Description of a calorimeter cluster.
virtual float timeOffset(const HWIdentifier &CellID, int gain) const =0
SG::ReadCondHandleKey< LuminosityCondData > m_lumiDataKey
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
Gaudi::Property< bool > m_skipEmptyEvents
std::vector< float > * m_c_channelADC2MEV0
std::vector< int > * m_c_channelLayer
std::vector< float > * m_el_eratio
std::vector< float > * m_el_reta
const LArHEC_ID * getHEC_ID(void) const
std::vector< int > * m_c_rawChannelLayer
std::vector< float > * m_el_f1
std::vector< double > * m_c_cellDPhi
virtual StatusCode dumpLumiblockInfo(SG::ReadHandle< xAOD::EventInfo > &ei)
std::vector< float > * m_el_weta1
const LArHVCorr * m_oflHVCorr
@ f1
E1/E = fraction of energy reconstructed in the first sampling, where E1 is energy in all strips belon...
std::vector< int > * m_hits_sampling
std::vector< double > * m_c_clusterEnergy
std::vector< float > * m_mc_vert_time
virtual StatusCode dumpTruthParticle(SG::ReadHandle< xAOD::ElectronContainer > &electronSelectionCnt, SG::ReadHandle< xAOD::TruthParticleContainer > &truthParticleCnt)
Liquid Argon digit base class.
std::vector< float > * m_vtx_delta_z0_sin
std::vector< unsigned int > * m_c_channelChannelIdMap
Liquid Argon ROD output object base class.
virtual const float & minBiasAverage(const HWIdentifier &id) const =0
access to average of E in minimum bias events index by Identifier
std::vector< double > * m_vtx_d0sig
::StatusCode StatusCode
StatusCode definition for legacy code.
SG::ReadCondHandleKey< LArHVCorr > m_offlineHVScaleCorrKey
std::vector< double > * m_c_cellToClusterDEta
virtual StatusCode dumpElectrons(const xAOD::Electron *electron)
Gaudi::Property< bool > m_doTagAndProbe
virtual const float & FSAMPL(const HWIdentifier &id) const =0
SG::ReadHandleKey< xAOD::ElectronContainer > m_myElecSelectionSgKey
std::vector< unsigned int > * m_c_channelHashMap
Class describing a truth particle in the MC record.
std::vector< float > * m_c_channelNoise
const LArFCAL_ID * getFCAL_ID(void) const
std::vector< double > * m_c_cellTime
const LArHEC_ID * m_larhec_id
std::vector< float > * m_c_rawChannelTime
std::vector< unsigned int > * m_c_rawChannelIdMap
std::vector< double > * m_hits_energy
std::vector< float > * m_el_rphi
std::vector< float > * m_mc_vert_perp
int pos_neg(const HWIdentifier id) const
Return the side of a hardware cell identifier pos_neg = [0,1] positive-side or negative-side Barrel...
std::vector< double > * m_c_channelEnergy
const CaloNoise * m_noiseCDO
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
uint32_t lumiBlock() const
The current event's luminosity block number.
HWIdentifier createSignalChannelID(const Identifier &id) const
create a HWIdentifier from an Identifier (not inline)
std::vector< float > * m_mc_vert_y
Gaudi::Property< float > m_elecEtaCut
virtual bool isValid() override final
Can the handle be successfully dereferenced?
std::vector< float > * m_mc_vert_x
SG::ReadHandleKey< CaloCellContainer > m_allCaloCellCntSgKey
float beamPosSigmaY() const
The width of the beam spot in the Y direction.
const LArOnlineID * m_onlineLArID
float averageInteractionsPerCrossing() const
Average interactions per crossing for all BCIDs - for out-of-time pile-up.
virtual StatusCode dumpEventInfo(SG::ReadHandle< xAOD::EventInfo > &ei)
Class describing a truth vertex in the MC record.
void bookDatabaseBranches(TTree *tree)
std::vector< double > * m_zee_T
const CaloCell_ID * m_calocell_id
std::vector< int > * m_c_cellLayer
std::vector< std::vector< int > > * m_c_rawChannelChInfo
std::vector< int > * m_c_clusterIndex_cellLvl
std::vector< int > * m_mc_vert_barcode
std::vector< float > * m_mc_vert_eta
unsigned int m_e_runNumber
std::unique_ptr< LArDSPThresholdsFlat > m_run2DSPThresh
std::vector< float > * m_c_rawChannelDSPThreshold
std::vector< float > * m_mc_part_phi
const xAOD::TruthParticle * getTruthParticle(const xAOD::IParticle &p)
Return the truthParticle associated to the given IParticle (if any)
std::vector< std::vector< double > > * m_c_channelShape
std::vector< double > * m_c_channelOFCTimeOffset
std::vector< double > * m_c_cellDEta
StatusCode initialize(bool used=true)
bool isTagElectron(const xAOD::Electron *electron)
Gaudi::Property< float > m_d0TagSig
std::vector< double > * m_zee_M
std::vector< float > * m_el_wtots1
Class to store hit energy and time in LAr cell from G4 simulation.
const ILArShape * m_shapes
SG::ReadCondHandleKey< ILArOFC > m_ofcKey
Gaudi::Property< float > m_minZeeMassTP
SG::ReadCondHandleKey< ILArfSampl > m_fSamplKey
std::vector< float > * m_vtx_z
SG::ReadCondHandleKey< ILArMinBiasAverage > m_minBiasAvgKey
virtual StatusCode dumpPrimVertexAssocToElectron(const xAOD::Electron *el, SG::ReadHandle< xAOD::VertexContainer > &primVertexCnt, SG::ReadHandle< xAOD::EventInfo > &evtInfo)
std::vector< float > * m_el_et
std::vector< double > * m_zee_pt
SG::ReadHandleKey< LArHitContainer > m_larEMBHitCntSgKey
std::vector< float > * m_c_channelOfflEneRescaler
virtual StatusCode FillNTupleWithSelectedElectrons(SG::ReadHandle< xAOD::EventInfo > &ei, SG::ReadHandle< xAOD::VertexContainer > &primVertexCnt, SG::ReadHandle< xAOD::ElectronContainer > &electronSelectionCnt, std::string &eSelectionText, const EventContext &ctx)
SG::ReadCondHandleKey< AthenaAttributeList > m_EneRescalerFldr
const LuminosityCondData * m_lumis
int feedthrough(const HWIdentifier id) const
Return the feedthrough of a hardware cell identifier : feedthrough = [0,31] Barrel - A/C side or H/...
SG::ReadCondHandleKey< LArOnOffIdMapping > m_larCablingKey
Gaudi::Property< float > m_z0Tag
const CaloIdManager * m_caloIdMgr
float beamPosSigmaXY() const
The beam spot shape's X-Y correlation.
std::vector< float > * m_el_Pt
std::vector< int > * m_c_cellGain
Class describing a Vertex.
Data object for each calorimeter readout cell.
bool isGoodProbeElectron(const xAOD::Electron *el)
std::vector< float > * m_c_rawChannelQuality
static CaloCondBlobFlt * getInstance(coral::Blob &blob)
Returns a pointer to a non-const CaloCondBlobFlt.
std::vector< int > * m_c_clusterChannelIndex
#define ATH_MSG_WARNING(x)
std::vector< double > * m_c_clusterTime
std::vector< int > * m_el_index
std::vector< int > * m_c_clusterIndex
std::vector< float > * m_el_e277
const CaloCondBlobFlt * m_EneRescaler
std::vector< float > * m_vtx_y
std::vector< int > * m_mc_part_pdgId
Gaudi::Property< bool > m_doElecSelectByTrackOnly
EventFlagErrorState errorState(EventFlagSubDet subDet) const
Get the error state for a particular sub-detector.
virtual OFCRef_t OFC_a(const HWIdentifier &id, int gain, int tbin=0) const =0
access to OFCs by online ID, gain, and tbin (!=0 for testbeam)
virtual double pt() const override final
The transverse momentum ( ) of the particle.
@ e277
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 7x7
std::vector< float > * m_vtx_x
std::vector< int > * m_c_clusterIndex_rawChLvl
std::vector< int > * m_lb_lumiblock
std::vector< float > * m_el_rhad1
SG::ReadHandleKey< LArRawChannelContainer > m_larRawChCntSgKey
std::vector< std::vector< float > > * m_c_channelDigits
@ weta1
shower width using +/-3 strips around the one with the maximal energy deposit: w3 strips = sqrt{sum(E...
std::vector< float > * m_el_Eta
std::vector< float > * m_vtx_deltaZ0
@ Eratio
(emaxs1-e2tsts1)/(emaxs1+e2tsts1)
std::vector< float > * m_c_clusterRawChannelIndex
int getCaloRegionIndex(const CaloCell *cell)
Class describing a TrackParticle.
unsigned long long m_e_eventNumber
const ILArfSampl * m_fSampl
std::vector< double > * m_hits_cellEta
std::vector< double > * m_c_clusterEta
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
EventReaderAlg(const std::string &name, ISvcLocator *pSvcLocator)
uint32_t bcid() const
The bunch crossing ID of the event.
std::vector< float > * m_el_rhad
std::vector< float > * m_mc_part_pt
std::vector< float > * m_c_channelEffectiveSigma
float theta() const
Returns the parameter, which has range 0 to .
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
std::vector< float > * m_c_rawChannelPed
size_type size() const noexcept
Returns the number of elements in the collection.
std::vector< double > * m_zee_px
SG::ReadHandleKey< xAOD::TruthEventContainer > m_truthEventCntSgKey
Gaudi::Property< bool > m_getAssociatedTopoCluster
std::vector< std::vector< double > > * m_c_channelOFCb
SG::ReadHandleKey< xAOD::ElectronContainer > m_electronCntSgKey
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_caloClusSgKey
SG::ReadCondHandleKey< ILArShape > m_shapeKey
std::vector< std::vector< float > > * m_lb_bcidLuminosity
std::vector< double > * m_hits_energyConv
SG::ReadCondHandleKey< CaloNoise > m_noiseCDOKey
@ fracs1
shower shape in the shower core : [E(+/-3)-E(+/-1)]/E(+/-1), where E(+/-n) is the energy in ± n strip...
std::vector< double > * m_zee_py
virtual const float & HVScaleCorr(const HWIdentifier &chid) const override final
float actualInteractionsPerCrossing() const
Average interactions per crossing for the current BCID - for in-time pile-up.
virtual StatusCode finalize() override
std::vector< float > * m_c_channelADC2MEV1
@ weta2
the lateral width is calculated with a window of 3x5 cells using the energy weighted sum over all cel...
size_type calo_cell_hash_max(void) const
cell 'global' hash table max size
SG::ReadCondHandleKey< AthenaAttributeList > m_run2DSPThresholdsKey
virtual ShapeRef_t Shape(const HWIdentifier &id, int gain, int tbin=0, int mode=0) const =0
std::vector< double > * m_zee_deltaR
std::vector< int > * m_c_clusterCellIndex