Loading [MathJax]/jax/input/TeX/config.js
 |
ATLAS Offline Software
|
Top algorithm to get local hadronic calibration performance plots for single pions.
More...
#include <GetLCSinglePionsPerf.h>
|
| GetLCSinglePionsPerf (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual | ~GetLCSinglePionsPerf () |
|
virtual StatusCode | initialize () |
|
virtual StatusCode | execute () |
|
virtual StatusCode | finalize () |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
enum | keys_topo { kTOPO_EM,
kTOPO_W,
kTOPO_OOC,
kTOPO
} |
|
enum | keys_tagged { kTAGEM,
kTAGHAD,
kTAGUNK,
kTAG
} |
|
enum | keys_momsums {
kMOM_CLS0,
kMOM_CLS1,
kMOM_CLS2,
kMOM_SUMCLS,
kMOM_MISS,
kMOM_MCENER
} |
|
enum | keys_norm_level { kLEVEL_PARTICLE,
kLEVEL_CALIBHIT,
kLEVEL_CALIBHIT_IDEAL
} |
|
typedef std::pair< std::string, xAOD::CaloCluster::MomentType > | moment_name_pair |
|
typedef std::vector< moment_name_pair > | moment_name_vector |
|
typedef ServiceHandle< StoreGateSvc > | StoreGateSvc_t |
|
Top algorithm to get local hadronic calibration performance plots for single pions.
- Version
- $Id: GetLCSinglePionsPerf.h,v 1.1 2009-07-01 14:36:01 pospelov Exp $
- Author
- Gennady Pospelov guenn.nosp@m.adi..nosp@m.pospe.nosp@m.lov@.nosp@m.cern..nosp@m.ch
- Date
- 1-July-2009
Definition at line 37 of file GetLCSinglePionsPerf.h.
◆ moment_name_pair
◆ moment_name_vector
◆ StoreGateSvc_t
◆ keys_momsums
Enumerator |
---|
kMOM_CLS0 | |
kMOM_CLS1 | |
kMOM_CLS2 | |
kMOM_SUMCLS | |
kMOM_MISS | |
kMOM_MCENER | |
Definition at line 55 of file GetLCSinglePionsPerf.h.
◆ keys_norm_level
◆ keys_tagged
◆ keys_topo
◆ GetLCSinglePionsPerf()
GetLCSinglePionsPerf::GetLCSinglePionsPerf |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~GetLCSinglePionsPerf()
GetLCSinglePionsPerf::~GetLCSinglePionsPerf |
( |
| ) |
|
|
virtual |
◆ angle_mollier_factor()
double GetLCSinglePionsPerf::angle_mollier_factor |
( |
double |
x | ) |
|
|
static |
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode GetLCSinglePionsPerf::execute |
( |
| ) |
|
|
virtual |
Definition at line 654 of file GetLCSinglePionsPerf.cxx.
656 const EventContext& ctx = getContext();
664 if( truthEvent->
at(0)->particles_empty() ){
666 return StatusCode::FAILURE;
669 for (
auto p: *truthEvent->
at(0)) {
671 if (std::abs(
p->pdg_id()) == MC::PIPLUS ||
672 std::abs(
p->pdg_id()) == MC::PI0) {
679 ATH_MSG_ERROR(
"No final stable pion in McEventCollection" );
680 return StatusCode::FAILURE;
694 if(clusColl->empty()) {
696 return StatusCode::SUCCESS;
701 bool PionWasReconstructed =
false;
702 float engClusCalibThs = 1.0*
MeV;
703 HepLorentzVector hlv_pion(1,0,0,1);
710 double mx_dens, mx_center_lambda;
712 mx_center_lambda = 0;
716 HepLorentzVector hlv_cls(1,0,0,1);
717 hlv_cls.setREtaPhi(1./cosh(theCluster->eta()), theCluster->eta(), theCluster->phi());
718 double r = hlv_pion.angle(hlv_cls.vect());
720 && mx_calib_tot > engClusCalibThs
721 && theCluster->size() > 1
723 && mx_center_lambda != 0.0 ) {
724 PionWasReconstructed =
true;
728 if(PionWasReconstructed){
753 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 50 of file AthAlgorithm.cxx.
57 return Algorithm::extraOutputDeps();
◆ fill_calibhits()
Definition at line 1175 of file GetLCSinglePionsPerf.cxx.
1181 std::vector<const CaloCalibrationHitContainer *> v_cchc;
1184 v_cchc.push_back(cchc.cptr());
1187 std::vector<const CaloCalibrationHitContainer *> v_dmcchc;
1190 v_dmcchc.push_back(cchc.cptr());
1194 double engCalibTot = 0.0;
1200 ATH_MSG_ERROR(
"Error! Bad identifier " << myId <<
" in container '" << cchc->Name() <<
"',"
1205 ATH_MSG_ERROR(
"Error! Bad identifier (nor lar or tile) " << myId <<
" in container '" << cchc->Name() <<
"',"
1209 engCalibTot += hit->energyTotal();
1214 double engCalibDeadTot = 0.0;
1215 double engDefaultCalculator = 0.0;
1221 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Bad dead material identifier " << myId <<
" in container '" << dmcchc->Name() <<
"',"
1226 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Bad dead material identifier (nor lar_dm or tile_dm) " << myId <<
" in container '" << dmcchc->Name() <<
"',"
1230 engCalibDeadTot += hit->energyTotal();
1235 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Absent DM description element!");
1245 double engCalibAssigned = 0.0;
1246 double engClusSumCalibPresOnly = 0.0;
1248 double mx_calib_tot, mx_calib_ooc, mx_calib_dm;
1263 engCalibAssigned += (mx_calib_tot + mx_calib_ooc + mx_calib_dm);
1265 double mx_calib_emb0, mx_calib_eme0, mx_calib_tileg3;
1269 ATH_MSG_WARNING(
"One of the moment ENG_CALIB_EMB0, ENG_CALIB_EME0, ENG_CALIB_TILEG3 is absent");
1271 engClusSumCalibPresOnly += (mx_calib_emb0+mx_calib_eme0+mx_calib_tileg3);
1276 engCalibAssigned -= engClusSumCalibPresOnly;
◆ fill_moments()
Definition at line 952 of file GetLCSinglePionsPerf.cxx.
955 ATH_MSG_DEBUG(
"GetLCSinglePionsPerf::fill_moments got cont. size: "<<clusColl.
size());
959 std::vector<const CaloCalibrationHitContainer *> v_cchc;
962 v_cchc.push_back(cchc.cptr());
965 std::vector<const CaloCalibrationHitContainer *> v_dmcchc;
968 v_dmcchc.push_back(cchc.cptr());
972 double engCalibTot = 0.0;
973 std::vector<double > engCalibTotSmp;
980 ATH_MSG_WARNING(
"Error! Bad identifier " << myId <<
" in container '" << cchc->Name() <<
"',"
985 ATH_MSG_WARNING(
"Error! Bad identifier (nor lar or tile) " << myId <<
" in container '" << cchc->Name() <<
"',"
991 engCalibTot += hit->energyTotal();
992 engCalibTotSmp[nsmp] += hit->energyTotal();
997 double engCalibDeadTot = 0.0;
998 std::vector<double > engCalibDeadTotInArea;
1005 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Bad dead material identifier " << myId <<
" in container '" << dmcchc->Name() <<
"',"
1010 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Bad dead material identifier (nor lar_dm or tile_dm) " << myId <<
" in container '" << dmcchc->Name() <<
"',"
1014 engCalibDeadTot += hit->energyTotal();
1019 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Absent DM description element!");
1023 engCalibDeadTotInArea[nDmArea] += hit->energyTotal();
1034 double engClusSumCalib(0);
1035 double engClusSumCalibPresOnly(0);
1036 std::vector<std::vector<double > > clsMoments;
1037 clsMoments.resize(clusColl.
size());
1038 std::vector<double > clsMomentsSum;
1042 unsigned int iClus = -1;
1049 if( theCluster->retrieveMoment((*im).second,
mx) ) {
1050 clsMoments[iClus][iMoment] =
mx;
1052 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Can't retrieve moment " << (*im).first <<
" " << (*im).second);
1054 clsMomentsSum[iMoment] += clsMoments[iClus][iMoment];
1058 engClusSumCalib +=
mx;
1060 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Can't retrieve moment xAOD::CaloCluster::ENG_CALIB_TOT ");
1062 double mx_calib_emb0, mx_calib_eme0, mx_calib_tileg3;
1066 ATH_MSG_WARNING(
"One of the moment ENG_CALIB_EMB0, ENG_CALIB_EME0, ENG_CALIB_TILEG3 is absent");
1068 engClusSumCalibPresOnly += (mx_calib_emb0+mx_calib_eme0+mx_calib_tileg3);
1072 double engCalibDeadTotWithPres = engCalibDeadTot + engClusSumCalibPresOnly;
1095 double eng_calib_dead_unclass = engCalibDeadTotWithPres - eng_calib_dead_emb0 - eng_calib_dead_tile0
1096 - eng_calib_dead_tileg3 - eng_calib_dead_eme0 - eng_calib_dead_hec0 - eng_calib_dead_fcal
1097 - eng_calib_dead_leakage;
1103 switch ( (*im).second ) {
1105 xnorm = clsMomentsSum[iMoment];
1108 xnorm = engCalibTot - engClusSumCalib;
1111 xnorm = engCalibTot - engClusSumCalib;
1114 xnorm = engCalibTot - engClusSumCalib;
1117 xnorm = engCalibDeadTotWithPres;
1120 xnorm = eng_calib_dead_emb0;
1123 xnorm = eng_calib_dead_tile0;
1126 xnorm = eng_calib_dead_tileg3;
1129 xnorm = eng_calib_dead_eme0;
1132 xnorm = eng_calib_dead_hec0;
1135 xnorm = eng_calib_dead_fcal;
1138 xnorm = eng_calib_dead_leakage;
1141 xnorm = eng_calib_dead_unclass;
1144 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Not implemented for " << (*im).first <<
" " << (*im).second);
1149 const double inv_xnorm = 1. / xnorm;
1150 for(
unsigned int i_cls=0; i_cls<clusColl.size(); i_cls++){
◆ fill_reco()
Definition at line 763 of file GetLCSinglePionsPerf.cxx.
769 std::vector<const xAOD::CaloClusterContainer *> clusCollVector;
772 clusCollVector.push_back(pColl.cptr());
775 HepLorentzVector hlv_pion(1,0,0,1);
778 std::vector<double > engClusSum;
780 std::vector<double > engClusSumPresOnly;
783 double engClusSumCalib(0);
784 double engClusSumCalibPresOnly(0);
785 double engClusSumTrueOOC(0);
786 double engClusSumTrueDM(0);
787 std::vector<double> engClusSumCalibTagged;
791 unsigned int iClus = -1;
798 double mx_calib_emb0 = 0;
799 double mx_calib_eme0 = 0;
800 double mx_calib_tileg3 = 0;
804 ATH_MSG_ERROR(
"One of the moment ENG_CALIB_EMB0, ENG_CALIB_EME0, ENG_CALIB_TILEG3 is absent" );
806 double mx_calib_out = 0;
807 double mx_calib_dead_tot = 0;
810 ATH_MSG_ERROR(
"One of the moment ENG_CALIB_OUT_L, ENG_CALIB_DEAD_TOT is absent" );
813 double mx_dens, mx_center_lambda;
815 mx_center_lambda = 0;
819 bool clusIsGood(
true);
826 HepLorentzVector hlv_cls(1,0,0,1);
827 hlv_cls.setREtaPhi(1./cosh(theCluster->eta()), theCluster->eta(), theCluster->phi());
828 double r = hlv_pion.angle(hlv_cls.vect());
833 theCluster = clusCollVector[
kTOPO]->at(iClus);
837 engClusSumCalibTagged[
kTAGEM] += mx_calib_tot;
839 engClusSumCalibTagged[
kTAGHAD] += mx_calib_tot;
841 engClusSumCalibTagged[
kTAGUNK] += mx_calib_tot;
848 engClusSumCalib += mx_calib_tot;
849 engClusSumCalibPresOnly += (mx_calib_emb0+mx_calib_eme0+mx_calib_tileg3);
850 engClusSumTrueOOC += mx_calib_out;
851 engClusSumTrueDM += mx_calib_dead_tot;
853 theCluster = clusCollVector[i_coll]->at(iClus);
854 engClusSum[i_coll] += theCluster->e();
863 theCluster = clusCollVector[i_coll]->at(iClus);
872 if(nGoodClus == 0)
return 0;
881 double enom = engClusSum[i_coll];
882 if(i_coll !=
kTOPO) {
883 enom = enom - engClusSumPresOnly[i_coll];
891 double edenom = engClusSumCalib - engClusSumCalibPresOnly;
893 edenom += engClusSumTrueOOC;
894 }
else if(i_coll ==
kTOPO){
895 edenom += (engClusSumTrueOOC + engClusSumTrueDM);
903 enom = engClusSum[i_coll] - engClusSumPresOnly[i_coll];
906 enom = engClusSumCalib - engClusSumCalibPresOnly + engClusSumRecoOOC;
907 }
else if(i_coll ==
kTOPO){
909 enom = (engClusSumCalib - engClusSumCalibPresOnly) + engClusSumTrueOOC + engClusSumRecoDM;
922 if(engClusSumCalib!=0.0) {
923 const double inv_engClusSumCalib = 1. / engClusSumCalib;
936 double enom = engClusSum[i_coll];
937 if(i_coll !=
kTOPO) {
938 enom = enom - engClusSumPresOnly[i_coll];
◆ finalize()
StatusCode GetLCSinglePionsPerf::finalize |
( |
| ) |
|
|
virtual |
Definition at line 481 of file GetLCSinglePionsPerf.cxx.
500 for(
int i_eta=0; i_eta<
m_netabin; i_eta++) {
519 for(
int i_eta=0; i_eta<
m_netabin; i_eta++) {
532 for(
int i_eta=0; i_eta<
m_netabin; i_eta++){
539 for(
int i_eta=0; i_eta<
m_netabin; i_eta++){
551 for(
int i_eta=0; i_eta<
m_netabin; i_eta++){
574 for(
int i_eta=0; i_eta<
m_netabin; i_eta++){
592 for(
int i_eta=0; i_eta<
m_netabin; i_eta++){
626 TTree *
tree =
new TTree(
"ParamTree",
"ParamTree");
646 return StatusCode::SUCCESS;
◆ initialize()
StatusCode GetLCSinglePionsPerf::initialize |
( |
| ) |
|
|
virtual |
Definition at line 173 of file GetLCSinglePionsPerf.cxx.
188 float h_eta_min = -5.0;
196 double *
xbins =
new double[n_logener_bins+1];
197 const double inv_n_logener_bins = 1. /
static_cast<double> (n_logener_bins);
198 for(
int i_bin=0; i_bin<=n_logener_bins; i_bin++) {
212 sprintf(
hname,
"hp_engTag_vs_eta_tag%d_ener%d",i_tag, i_ener);
214 hp->GetXaxis()->SetTitle(
"#eta");
215 hp->GetYaxis()->SetTitle(
"E_{class}/E_{tot}");
223 for(
int i_eta=0; i_eta<
m_netabin; i_eta++) {
224 sprintf(
hname,
"hp_engTag_vs_ebeam_tag%d_eta%d",i_tag, i_eta);
226 hp->GetXaxis()->SetTitle(
"E_{#pi}, MeV");
227 hp->GetYaxis()->SetTitle(
"E_{class}/E_{tot}");
247 double ylow(0), yup(0);
252 sprintf(
hname,
"hp_engRecOverTruth_vs_eta_coll%d_norm%d_ener%d",i_coll, i_norm, i_ener);
254 hp->GetXaxis()->SetTitle(
"#eta");
256 hp->GetYaxis()->SetTitle(
"E_{reco}/E_{#pi}");
258 hp->GetYaxis()->SetTitle(
"E_{reco}/E_{calib}");
270 for(
int i_eta=0; i_eta<
m_netabin; i_eta++) {
271 double ylow(0), yup(0);
276 sprintf(
hname,
"hp_m_engRecOverTruth_vs_ebeam_coll%d_norm%d_eta%d",i_coll, i_norm, i_eta);
278 hp->GetXaxis()->SetTitle(
"E_{#pi}, MeV");
280 hp->GetYaxis()->SetTitle(
"E_{reco}/E_{#pi}");
282 hp->GetYaxis()->SetTitle(
"E_{reco}/E_{calib}");
300 for(
int i_eta=0; i_eta<
m_netabin; i_eta++){
301 sprintf(
hname,
"hp_engRecSpect_coll%d_ener%d_eta%d",i_coll, i_ener, i_eta);
303 h1->GetXaxis()->SetTitle(
"E_{reco}/E_{#pi}");
312 for(
int i_eta=0; i_eta<
m_netabin; i_eta++){
313 sprintf(
hname,
"hp_engPionSpect_ener%d_eta%d",i_ener, i_eta);
317 h1->GetXaxis()->SetTitle(
"E_{#pi}, MeV");
331 for(
int i_eta=0; i_eta<
m_netabin; i_eta++){
332 sprintf(
hname,
"hp_engNoiseClusSpect_coll%d_eta%d",i_coll, i_eta);
334 h1->GetXaxis()->SetTitle(
"E_{clus}, MeV");
341 sprintf(
hname,
"hp_engNoiseClus_vs_eta_coll%d",i_coll);
343 hp->GetXaxis()->SetTitle(
"#eta");
344 hp->GetYaxis()->SetTitle(
"E_{clus}, MeV");
360 sprintf(
hname,
"hp_clusMoment_vs_eta_mom%d_sum%d_ener%d",i_mom, i_sum, i_ener);
362 hp->GetXaxis()->SetTitle(
"#eta");
363 hp->GetYaxis()->SetTitle(
"Mom_{cls}/Mom_{sum}");
375 for(
int i_eta=0; i_eta<
m_netabin; i_eta++){
376 sprintf(
hname,
"hp_clusMoment_vs_ebeam_mom%d_sum%d_eta%d",i_mom, i_sum, i_eta);
378 hp->GetXaxis()->SetTitle(
"E_{#pi}");
379 hp->GetYaxis()->SetTitle(
"Mom_{cls}/Mom_{sum}");
394 for(
int i_eff=0; i_eff<2; i_eff++){
397 sprintf(
hname,
"hp_m_RecoEfficiency_eff%d_ener%d", i_eff, i_ener);
399 h1->GetXaxis()->SetTitle(
"#eta");
400 h1->GetYaxis()->SetTitle(
"Efficiency");
405 for(
int i_eff=0; i_eff<2; i_eff++){
407 for(
int i_eta=0; i_eta<
m_netabin; i_eta++){
408 sprintf(
hname,
"hp_m_RecoEfficiency_eff%d_eta%d", i_eff, i_eta);
410 h1->GetXaxis()->SetTitle(
"E_{#pi}, MeV");
411 h1->GetYaxis()->SetTitle(
"Efficiency");
426 sprintf(
hname,
"hp_SumCalibHitOverEbeam_vs_eta_ener%d", i_ener);
428 hp->GetXaxis()->SetTitle(
"#eta");
429 hp->GetYaxis()->SetTitle(
"#sum E_{calib}/E_{#pi}");
431 sprintf(
hname,
"hp_DefaultCalculatorOverEbeam_vs_eta_ener%d", i_ener);
433 hp->GetXaxis()->SetTitle(
"#eta");
434 hp->GetYaxis()->SetTitle(
"#sum E_{DefCalc}/E_{#pi}");
436 sprintf(
hname,
"hp_SumCalibHitAssignedOverEbeam_vs_eta_ener%d", i_ener);
438 hp->GetXaxis()->SetTitle(
"#eta");
439 hp->GetYaxis()->SetTitle(
"#sum E_{assigned}/E_{#pi}");
441 sprintf(
hname,
"hp_SumCalibHitAssignedOverEbeam_vs_etaphi_ener%d", i_ener);
442 TProfile2D *hp2 =
new TProfile2D(
hname,
hname, 25, h_eta_min, h_eta_max, 25, -
M_PI,
M_PI);
443 hp2->GetXaxis()->SetTitle(
"#eta");
444 hp2->GetYaxis()->SetTitle(
"#phi");
445 hp2->GetZaxis()->SetTitle(
"#sum E_{assigned}/E_{#pi}");
473 return StatusCode::SUCCESS;
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
StatusCode AthAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_CalibrationHitContainerNames
◆ m_calo_id
◆ m_caloDmDescrManager
◆ m_clusMoment_vs_ebeam
std::vector<std::vector<std::vector<TProfile *> > > GetLCSinglePionsPerf::m_clusMoment_vs_ebeam |
|
private |
◆ m_clusMoment_vs_eta
std::vector<std::vector<std::vector<TProfile *> > > GetLCSinglePionsPerf::m_clusMoment_vs_eta |
|
private |
◆ m_clusterBasicCollName
◆ m_clusterCollNames
◆ m_DefaultCalculatorOverEbeam_vs_eta
std::vector<TProfile *> GetLCSinglePionsPerf::m_DefaultCalculatorOverEbeam_vs_eta |
|
private |
◆ m_deta
float GetLCSinglePionsPerf::m_deta |
|
private |
◆ m_detStore
◆ m_distance_cut
double GetLCSinglePionsPerf::m_distance_cut |
|
private |
◆ m_dlogener
float GetLCSinglePionsPerf::m_dlogener |
|
private |
◆ m_DMCalibrationHitContainerNames
◆ m_doCalibHitsValidation
bool GetLCSinglePionsPerf::m_doCalibHitsValidation |
|
private |
◆ m_doClusMoments
bool GetLCSinglePionsPerf::m_doClusMoments |
|
private |
◆ m_doEngNoiseClus
bool GetLCSinglePionsPerf::m_doEngNoiseClus |
|
private |
◆ m_doEngRecOverTruth
bool GetLCSinglePionsPerf::m_doEngRecOverTruth |
|
private |
◆ m_doEngRecSpect
bool GetLCSinglePionsPerf::m_doEngRecSpect |
|
private |
◆ m_doEngTag
bool GetLCSinglePionsPerf::m_doEngTag |
|
private |
◆ m_doRecoEfficiency
bool GetLCSinglePionsPerf::m_doRecoEfficiency |
|
private |
◆ m_dphi
float GetLCSinglePionsPerf::m_dphi |
|
private |
◆ m_engNoiseClus_vs_eta
std::vector<TProfile *> GetLCSinglePionsPerf::m_engNoiseClus_vs_eta |
|
private |
◆ m_engNoiseClusSpect
std::vector<std::vector<TH1F *> > GetLCSinglePionsPerf::m_engNoiseClusSpect |
|
private |
◆ m_engPionSpect
std::vector<std::vector<TH1F *> > GetLCSinglePionsPerf::m_engPionSpect |
|
private |
◆ m_engRecOverTruth_vs_ebeam
std::vector<std::vector<std::vector<TProfile *> > > GetLCSinglePionsPerf::m_engRecOverTruth_vs_ebeam |
|
private |
◆ m_engRecOverTruth_vs_eta
std::vector<std::vector<std::vector<TProfile *> > > GetLCSinglePionsPerf::m_engRecOverTruth_vs_eta |
|
private |
◆ m_engRecSpect
std::vector<std::vector<std::vector<TH1F *> > > GetLCSinglePionsPerf::m_engRecSpect |
|
private |
◆ m_engTag_vs_ebeam
std::vector<std::vector<TProfile *> > GetLCSinglePionsPerf::m_engTag_vs_ebeam |
|
private |
◆ m_engTag_vs_eta
std::vector<std::vector<TProfile *> > GetLCSinglePionsPerf::m_engTag_vs_eta |
|
private |
◆ m_etamax
float GetLCSinglePionsPerf::m_etamax |
|
private |
◆ m_etamin
float GetLCSinglePionsPerf::m_etamin |
|
private |
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_id_helper
◆ m_logenermax
float GetLCSinglePionsPerf::m_logenermax |
|
private |
◆ m_logenermin
float GetLCSinglePionsPerf::m_logenermin |
|
private |
◆ m_mc_ener
double GetLCSinglePionsPerf::m_mc_ener |
|
private |
◆ m_mc_enerbin
int GetLCSinglePionsPerf::m_mc_enerbin |
|
private |
◆ m_mc_eta
double GetLCSinglePionsPerf::m_mc_eta |
|
private |
◆ m_mc_etabin
int GetLCSinglePionsPerf::m_mc_etabin |
|
private |
◆ m_mc_phi
double GetLCSinglePionsPerf::m_mc_phi |
|
private |
◆ m_mc_phibin
int GetLCSinglePionsPerf::m_mc_phibin |
|
private |
◆ m_ncluscoll
int GetLCSinglePionsPerf::m_ncluscoll |
|
private |
◆ m_netabin
int GetLCSinglePionsPerf::m_netabin |
|
private |
◆ m_nlogenerbin
int GetLCSinglePionsPerf::m_nlogenerbin |
|
private |
◆ m_nlogenerbin2
int GetLCSinglePionsPerf::m_nlogenerbin2 |
|
private |
◆ m_nmoments
int GetLCSinglePionsPerf::m_nmoments |
|
private |
◆ m_nmomsums
int GetLCSinglePionsPerf::m_nmomsums |
|
private |
◆ m_nnormtype
int GetLCSinglePionsPerf::m_nnormtype |
|
private |
◆ m_nphibin
int GetLCSinglePionsPerf::m_nphibin |
|
private |
◆ m_ntagcases
int GetLCSinglePionsPerf::m_ntagcases |
|
private |
◆ m_outputFile
TFile* GetLCSinglePionsPerf::m_outputFile |
|
private |
◆ m_outputFileName
std::string GetLCSinglePionsPerf::m_outputFileName |
|
private |
◆ m_phimax
float GetLCSinglePionsPerf::m_phimax |
|
private |
◆ m_phimin
float GetLCSinglePionsPerf::m_phimin |
|
private |
◆ m_RecoEfficiency_vs_ebeam
std::vector<TH1F *> GetLCSinglePionsPerf::m_RecoEfficiency_vs_ebeam[2] |
|
private |
◆ m_RecoEfficiency_vs_eta
std::vector<TH1F *> GetLCSinglePionsPerf::m_RecoEfficiency_vs_eta[2] |
|
private |
◆ m_SumCalibHitAssignedOverEbeam_vs_eta
std::vector<TProfile *> GetLCSinglePionsPerf::m_SumCalibHitAssignedOverEbeam_vs_eta |
|
private |
◆ m_SumCalibHitAssignedOverEbeam_vs_etaphi
std::vector<TProfile2D *> GetLCSinglePionsPerf::m_SumCalibHitAssignedOverEbeam_vs_etaphi |
|
private |
◆ m_SumCalibHitOverEbeam_vs_eta
std::vector<TProfile *> GetLCSinglePionsPerf::m_SumCalibHitOverEbeam_vs_eta |
|
private |
◆ m_truthPiEngFraction
float GetLCSinglePionsPerf::m_truthPiEngFraction |
|
private |
◆ m_useGoodClus
bool GetLCSinglePionsPerf::m_useGoodClus |
|
private |
◆ m_usePionClusters
bool GetLCSinglePionsPerf::m_usePionClusters |
|
private |
◆ m_useRecoEfficiency
bool GetLCSinglePionsPerf::m_useRecoEfficiency |
|
private |
◆ m_validMoments
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
std::vector< std::vector< TProfile * > > m_engTag_vs_eta
std::vector< std::vector< std::vector< TProfile * > > > m_clusMoment_vs_ebeam
@ ENG_CALIB_DEAD_UNCLASS
Attached Calibration Hit energy in dead material in unclassified areas of the detector.
int fill_calibhits(const xAOD::CaloClusterContainer &clusColl, const EventContext &ctx)
CaloDmDescrElement * get_element(const Identifier &cellId) const
std::vector< std::vector< std::vector< TProfile * > > > m_clusMoment_vs_eta
bool is_lar(Identifier id) const
std::vector< TProfile * > m_SumCalibHitOverEbeam_vs_eta
Scalar eta() const
pseudorapidity method
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
std::vector< std::vector< TH1F * > > m_engNoiseClusSpect
@ ENG_CALIB_DEAD_LEAKAGE
Attached Calibration Hit energy in dead material behind calorimeters.
float m_truthPiEngFraction
std::pair< std::string, xAOD::CaloCluster::MomentType > moment_name_pair
@ ENG_CALIB_TILEG3
Calibration Hit energy inside the cluster scintillator.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
@ ENG_CALIB_OUT_M
Attached Calibration Hit energy outside clusters but inside the calorimeter with medium matching (Ang...
@ CENTER_LAMBDA
Shower depth at Cluster Centroid.
bool m_doCalibHitsValidation
@ ENG_CALIB_EMB0
Calibration Hit energy inside the cluster barrel presampler.
std::vector< std::vector< TH1F * > > m_engPionSpect
int calo_sample(const Identifier id) const
returns an int taken from Sampling enum and describing the subCalo to which the Id belongs.
@ ENG_CALIB_DEAD_TILE0
Attached Calibration Hit energy in dead material between EMB3 and TILE0.
static double angle_mollier_factor(double x)
bool is_valid() const
Check if id is in a valid state.
std::vector< std::vector< TProfile * > > m_engTag_vs_ebeam
bool isGenStable(const T &p)
Determine if the particle is stable at the generator (not det-sim) level,.
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual void setOwner(IDataHandleHolder *o)=0
static const CaloDmDescrManager * instance()
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
SG::ReadHandleKeyArray< xAOD::CaloClusterContainer > m_clusterCollNames
std::vector< TProfile * > m_SumCalibHitAssignedOverEbeam_vs_eta
Description of a calorimeter cluster.
const AtlasDetectorID * m_id_helper
virtual StatusCode sysInitialize() override
Override sysInitialize.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
def TProfile(*args, **kwargs)
int fill_moments(const xAOD::CaloClusterContainer &clusColl, const EventContext &ctx)
::StatusCode StatusCode
StatusCode definition for legacy code.
@ ENG_CALIB_TOT
Calibration Hit energy inside the cluster.
moment_name_vector m_validMoments
std::vector< TH1F * > m_RecoEfficiency_vs_ebeam[2]
bool is_tile_dm(Identifier id) const
@ ENG_CALIB_DEAD_FCAL
Attached Calibration Hit energy in dead material before FCAL, between FCAL and HEC.
bool is_tile(Identifier id) const
std::vector< TProfile * > m_engNoiseClus_vs_eta
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
This defines the McEventCollection, which is really just an ObjectVector of McEvent objects.
@ FIRST_ENG_DENS
First Moment in E/V.
std::string m_outputFileName
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
virtual bool checkStatus(const StatusIndicator &statusIndicator) const
Check status.
const GenParticle * ConstGenParticlePtr
Class to store calorimeter calibration hit.
@ ENG_CALIB_EME0
Calibration Hit energy inside the cluster endcap presampler.
@ ENG_CALIB_DEAD_HEC0
Attached Calibration Hit energy in dead material between EME3 and HEC0.
std::vector< std::vector< std::vector< TH1F * > > > m_engRecSpect
@ ENG_CALIB_DEAD_TILEG3
Attached Calibration Hit energy in dead material before scintillator.
std::vector< std::vector< std::vector< TProfile * > > > m_engRecOverTruth_vs_eta
SG::ReadHandleKeyArray< CaloCalibrationHitContainer > m_DMCalibrationHitContainerNames
SG::ReadHandleKeyArray< CaloCalibrationHitContainer > m_CalibrationHitContainerNames
const CaloCell_ID * m_calo_id
DataObjIDColl m_extendedExtraObjects
std::vector< TProfile * > m_DefaultCalculatorOverEbeam_vs_eta
bool is_lar_dm(Identifier id) const
LAr/Tile dead material:
@ ENG_CALIB_DEAD_TOT
Attached Calibration Hit energy in dead material.
std::vector< TProfile2D * > m_SumCalibHitAssignedOverEbeam_vs_etaphi
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
#define ATH_MSG_WARNING(x)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
virtual const store_type & getStatusWord() const
retrieve the entire status word
AthAlgorithm()
Default constructor:
int fill_reco(const xAOD::CaloClusterContainer &clusColl, const EventContext &ctx)
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
@ ENG_CALIB_OUT_L
Attached Calibration Hit energy outside clusters but inside the calorimeter with loose matching (Angl...
@ ENG_CALIB_DEAD_EME0
Attached Calibration Hit energy in dead material before EME0, between EME0 and EME1.
const T * at(size_type n) const
Access an element, as an rvalue.
@ ENG_CALIB_OUT_T
Attached Calibration Hit energy outside clusters but inside the calorimeter with tight matching (Angl...
std::vector< TH1F * > m_RecoEfficiency_vs_eta[2]
constexpr int pow(int base, int exp) noexcept
std::vector< std::vector< std::vector< TProfile * > > > m_engRecOverTruth_vs_ebeam
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
reconstruction status indicator
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_clusterBasicCollName
@ ENG_CALIB_DEAD_EMB0
Attached Calibration Hit energy in dead material before EMB0, between EMB0 and EMB1.
int get_dm_area(const Identifier &cellId) const
const CaloDmDescrManager * m_caloDmDescrManager