34 const std::string allPFOs{
"PFOMonitorAllPFOs"};
35 const std::string chargedPFOs{
"PFOMonitorChargedPFOs"};
36 const std::string neutralPFOs{
"PFOMonitorNeutralPFOs"};
87 return StatusCode::SUCCESS;
93 return StatusCode::SUCCESS;
97 nPFOs = chpfos->size() + nupfos->size();
98 nChPFOs = chpfos->size();
99 nNuPFOs = nupfos->size();
102 fill(chargedPFOs,nChPFOs);
103 fill(neutralPFOs,nNuPFOs);
106 const static SG::AuxElement::ConstAccessor<float> acc_SECOND_R(
"SECOND_R");
107 const static SG::AuxElement::ConstAccessor<float> acc_CENTER_LAMBDA(
"CENTER_LAMBDA");
108 const static SG::AuxElement::ConstAccessor<float> acc_ISOLATION(
"ISOLATION");
109 const static SG::AuxElement::ConstAccessor<float> acc_N_BAD_CELLS(
"N_BAD_CELLS");
110 const static SG::AuxElement::ConstAccessor<float> acc_ENG_BAD_CELLS(
"ENG_BAD_CELLS");
111 const static SG::AuxElement::ConstAccessor<float> acc_BADLARQ_FRAC(
"BADLARQ_FRAC");
112 const static SG::AuxElement::ConstAccessor<float> acc_ENG_POS(
"ENG_POS");
113 const static SG::AuxElement::ConstAccessor<float> acc_AVG_LAR_Q(
"AVG_LAR_Q");
114 const static SG::AuxElement::ConstAccessor<float> acc_AVG_TILE_Q(
"AVG_TILE_Q");
115 const static SG::AuxElement::ConstAccessor<float> acc_EM_PROBABILITY(
"EM_PROBABILITY");
116 const static SG::AuxElement::ConstAccessor<float> acc_SECOND_LAMBDA(
"SECOND_LAMBDA");
122 const static SG::AuxElement::ConstAccessor<int> acc_IsInDenseEnvironment(
"IsInDenseEnvironment");
123 const static SG::AuxElement::ConstAccessor<float> acc_tracksExpectedEnergyDeposit(
"TracksExpectedEnergyDeposit");
125 for (
const auto pfo : *chpfos) {
135 float expectedEnergy = -1.0;
138 if(acc_IsInDenseEnvironment.isAvailable(*pfo)) {denseEnv = acc_IsInDenseEnvironment(*pfo);}
139 else {
ATH_MSG_DEBUG(
"This charged PFO did not have IsInDenseEnvironment set");}
141 if(acc_tracksExpectedEnergyDeposit.isAvailable(*pfo)) {expectedEnergy = acc_tracksExpectedEnergyDeposit(*pfo);}
142 else {
ATH_MSG_DEBUG(
"This charged PFO did not have TracksExpectedEnergyDeposit set");}
144 ChpT = pfo->pt()/
GeV;
147 Chmass= pfo->m()/
GeV;
149 Chy = pfo->rapidity();
150 ChDenseEnv = denseEnv;
151 ChExpE= expectedEnergy;
155 DenseEnvFlag = denseEnv;
156 fill(chargedPFOs,ChpT,Cheta,Chphi,Chmass,ChE,Chy,ChDenseEnv,ChExpE,DenseEnvFlag);
160 for (
const auto pfo : *nupfos) {
164 if (0 == E)
continue;
171 NupT = pfo->pt()/
GeV;
174 Numass= pfo->m()/
GeV;
176 Nuy = pfo->rapidity();
178 if (acc_ISOLATION.isAvailable(*pfo)) {NuIso = acc_ISOLATION(*pfo);}
179 else {
ATH_MSG_DEBUG(
"This neutral PFO did not have ISOLATION set");}
181 if (acc_ENG_POS.isAvailable(*pfo)) {NuEPos= acc_ENG_POS(*pfo);}
182 else {
ATH_MSG_DEBUG(
"This neutral PFO did not have ENG_POS set");}
184 if (acc_N_BAD_CELLS.isAvailable(*pfo)) {NuNBadCells = acc_N_BAD_CELLS(*pfo);}
185 else {
ATH_MSG_DEBUG(
"This neutral PFO did not have N_BAD_CELLS set");}
187 if (acc_ENG_BAD_CELLS.isAvailable(*pfo)) {NuEBadCells = acc_ENG_BAD_CELLS(*pfo);}
188 else {
ATH_MSG_DEBUG(
"This neutral PFO did not have ENG_BAD_CELLS set");}
190 if (acc_AVG_LAR_Q.isAvailable(*pfo)) {NuAvgLarQ = acc_AVG_LAR_Q(*pfo);}
191 else {
ATH_MSG_DEBUG(
"This neutral PFO did not have AVG_LAR_Q set");}
193 if (acc_AVG_TILE_Q.isAvailable(*pfo)) {NuAvgTileQ = acc_AVG_TILE_Q(*pfo);}
194 else {
ATH_MSG_DEBUG(
"This neutral PFO did not have AVG_TILE_Q set");}
196 if (acc_SECOND_R.isAvailable(*pfo)) {NuSecondR = acc_SECOND_R(*pfo);}
197 else {
ATH_MSG_DEBUG(
"This neutral PFO did not have SECOND_R set");}
199 if (acc_SECOND_LAMBDA.isAvailable(*pfo)) {NuSecondLambda = acc_SECOND_LAMBDA(*pfo);}
200 else {
ATH_MSG_DEBUG(
"This neutral PFO did not have SECOND_LAMBDA set");}
202 if (acc_CENTER_LAMBDA.isAvailable(*pfo)) {NuCenterLambda = acc_CENTER_LAMBDA(*pfo);}
203 else {
ATH_MSG_DEBUG(
"This neutral PFO did not have CENTER_LAMBDA set");}
205 if (acc_BADLARQ_FRAC.isAvailable(*pfo)) {NuBadLarQFrac = acc_BADLARQ_FRAC(*pfo);}
206 else {
ATH_MSG_DEBUG(
"This neutral PFO did not have BAD_LARQ_FRAC set");}
208 if (acc_EM_PROBABILITY.isAvailable(*pfo)) {NuEMProb = acc_EM_PROBABILITY(*pfo);}
209 else {
ATH_MSG_DEBUG(
"This neutral PFO did not have BAD_LARQ_FRAC set");}
220 fill(neutralPFOs,NupT,Nueta,Nuphi,Numass,NuE,Nuy,NuIso,NuEPos,NuNBadC,NuEBadCells,NuAvgLarQ,NuSecondR,NuCenterLambda,NuSecondLambda,NuBadLarQFrac,NuEMProb);
223 return StatusCode::SUCCESS;