|
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;
671 HepMC::GenEvent::particle_const_iterator pit = truthEvent->
at(0)->particles_begin();
686 if(clusColl->empty()) {
688 return StatusCode::SUCCESS;
693 bool PionWasReconstructed =
false;
694 float engClusCalibThs = 1.0*
MeV;
695 HepLorentzVector hlv_pion(1,0,0,1);
702 double mx_dens, mx_center_lambda;
704 mx_center_lambda = 0;
708 HepLorentzVector hlv_cls(1,0,0,1);
709 hlv_cls.setREtaPhi(1./cosh(theCluster->eta()), theCluster->eta(), theCluster->phi());
710 double r = hlv_pion.angle(hlv_cls.vect());
712 && mx_calib_tot > engClusCalibThs
713 && theCluster->size() > 1
715 && mx_center_lambda != 0.0 ) {
716 PionWasReconstructed =
true;
720 if(PionWasReconstructed){
745 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 1167 of file GetLCSinglePionsPerf.cxx.
1173 std::vector<const CaloCalibrationHitContainer *> v_cchc;
1176 v_cchc.push_back(cchc.cptr());
1179 std::vector<const CaloCalibrationHitContainer *> v_dmcchc;
1182 v_dmcchc.push_back(cchc.cptr());
1186 double engCalibTot = 0.0;
1192 ATH_MSG_ERROR(
"Error! Bad identifier " << myId <<
" in container '" << cchc->Name() <<
"',"
1197 ATH_MSG_ERROR(
"Error! Bad identifier (nor lar or tile) " << myId <<
" in container '" << cchc->Name() <<
"',"
1201 engCalibTot += hit->energyTotal();
1206 double engCalibDeadTot = 0.0;
1207 double engDefaultCalculator = 0.0;
1213 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Bad dead material identifier " << myId <<
" in container '" << dmcchc->Name() <<
"',"
1218 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Bad dead material identifier (nor lar_dm or tile_dm) " << myId <<
" in container '" << dmcchc->Name() <<
"',"
1222 engCalibDeadTot += hit->energyTotal();
1227 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Absent DM description element!");
1237 double engCalibAssigned = 0.0;
1238 double engClusSumCalibPresOnly = 0.0;
1240 double mx_calib_tot, mx_calib_ooc, mx_calib_dm;
1255 engCalibAssigned += (mx_calib_tot + mx_calib_ooc + mx_calib_dm);
1257 double mx_calib_emb0, mx_calib_eme0, mx_calib_tileg3;
1261 ATH_MSG_WARNING(
"One of the moment ENG_CALIB_EMB0, ENG_CALIB_EME0, ENG_CALIB_TILEG3 is absent");
1263 engClusSumCalibPresOnly += (mx_calib_emb0+mx_calib_eme0+mx_calib_tileg3);
1268 engCalibAssigned -= engClusSumCalibPresOnly;
◆ fill_moments()
Definition at line 944 of file GetLCSinglePionsPerf.cxx.
947 ATH_MSG_DEBUG(
"GetLCSinglePionsPerf::fill_moments got cont. size: "<<clusColl.
size());
951 std::vector<const CaloCalibrationHitContainer *> v_cchc;
954 v_cchc.push_back(cchc.cptr());
957 std::vector<const CaloCalibrationHitContainer *> v_dmcchc;
960 v_dmcchc.push_back(cchc.cptr());
964 double engCalibTot = 0.0;
965 std::vector<double > engCalibTotSmp;
972 ATH_MSG_WARNING(
"Error! Bad identifier " << myId <<
" in container '" << cchc->Name() <<
"',"
977 ATH_MSG_WARNING(
"Error! Bad identifier (nor lar or tile) " << myId <<
" in container '" << cchc->Name() <<
"',"
983 engCalibTot += hit->energyTotal();
984 engCalibTotSmp[nsmp] += hit->energyTotal();
989 double engCalibDeadTot = 0.0;
990 std::vector<double > engCalibDeadTotInArea;
997 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Bad dead material identifier " << myId <<
" in container '" << dmcchc->Name() <<
"',"
1002 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Bad dead material identifier (nor lar_dm or tile_dm) " << myId <<
" in container '" << dmcchc->Name() <<
"',"
1006 engCalibDeadTot += hit->energyTotal();
1011 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Absent DM description element!");
1015 engCalibDeadTotInArea[nDmArea] += hit->energyTotal();
1026 double engClusSumCalib(0);
1027 double engClusSumCalibPresOnly(0);
1028 std::vector<std::vector<double > > clsMoments;
1029 clsMoments.resize(clusColl.
size());
1030 std::vector<double > clsMomentsSum;
1034 unsigned int iClus = -1;
1041 if( theCluster->retrieveMoment((*im).second,
mx) ) {
1042 clsMoments[iClus][iMoment] =
mx;
1044 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Can't retrieve moment " << (*im).first <<
" " << (*im).second);
1046 clsMomentsSum[iMoment] += clsMoments[iClus][iMoment];
1050 engClusSumCalib +=
mx;
1052 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Can't retrieve moment xAOD::CaloCluster::ENG_CALIB_TOT ");
1054 double mx_calib_emb0, mx_calib_eme0, mx_calib_tileg3;
1058 ATH_MSG_WARNING(
"One of the moment ENG_CALIB_EMB0, ENG_CALIB_EME0, ENG_CALIB_TILEG3 is absent");
1060 engClusSumCalibPresOnly += (mx_calib_emb0+mx_calib_eme0+mx_calib_tileg3);
1064 double engCalibDeadTotWithPres = engCalibDeadTot + engClusSumCalibPresOnly;
1087 double eng_calib_dead_unclass = engCalibDeadTotWithPres - eng_calib_dead_emb0 - eng_calib_dead_tile0
1088 - eng_calib_dead_tileg3 - eng_calib_dead_eme0 - eng_calib_dead_hec0 - eng_calib_dead_fcal
1089 - eng_calib_dead_leakage;
1095 switch ( (*im).second ) {
1097 xnorm = clsMomentsSum[iMoment];
1100 xnorm = engCalibTot - engClusSumCalib;
1103 xnorm = engCalibTot - engClusSumCalib;
1106 xnorm = engCalibTot - engClusSumCalib;
1109 xnorm = engCalibDeadTotWithPres;
1112 xnorm = eng_calib_dead_emb0;
1115 xnorm = eng_calib_dead_tile0;
1118 xnorm = eng_calib_dead_tileg3;
1121 xnorm = eng_calib_dead_eme0;
1124 xnorm = eng_calib_dead_hec0;
1127 xnorm = eng_calib_dead_fcal;
1130 xnorm = eng_calib_dead_leakage;
1133 xnorm = eng_calib_dead_unclass;
1136 ATH_MSG_ERROR(
"GetLCSinglePionsPerf::fill_moments() -> Error! Not implemented for " << (*im).first <<
" " << (*im).second);
1141 const double inv_xnorm = 1. / xnorm;
1142 for(
unsigned int i_cls=0; i_cls<clusColl.size(); i_cls++){
◆ fill_reco()
Definition at line 755 of file GetLCSinglePionsPerf.cxx.
761 std::vector<const xAOD::CaloClusterContainer *> clusCollVector;
764 clusCollVector.push_back(pColl.cptr());
767 HepLorentzVector hlv_pion(1,0,0,1);
770 std::vector<double > engClusSum;
772 std::vector<double > engClusSumPresOnly;
775 double engClusSumCalib(0);
776 double engClusSumCalibPresOnly(0);
777 double engClusSumTrueOOC(0);
778 double engClusSumTrueDM(0);
779 std::vector<double> engClusSumCalibTagged;
783 unsigned int iClus = -1;
790 double mx_calib_emb0 = 0;
791 double mx_calib_eme0 = 0;
792 double mx_calib_tileg3 = 0;
796 ATH_MSG_ERROR(
"One of the moment ENG_CALIB_EMB0, ENG_CALIB_EME0, ENG_CALIB_TILEG3 is absent" );
798 double mx_calib_out = 0;
799 double mx_calib_dead_tot = 0;
802 ATH_MSG_ERROR(
"One of the moment ENG_CALIB_OUT_L, ENG_CALIB_DEAD_TOT is absent" );
805 double mx_dens, mx_center_lambda;
807 mx_center_lambda = 0;
811 bool clusIsGood(
true);
818 HepLorentzVector hlv_cls(1,0,0,1);
819 hlv_cls.setREtaPhi(1./cosh(theCluster->eta()), theCluster->eta(), theCluster->phi());
820 double r = hlv_pion.angle(hlv_cls.vect());
825 theCluster = clusCollVector[
kTOPO]->at(iClus);
829 engClusSumCalibTagged[
kTAGEM] += mx_calib_tot;
831 engClusSumCalibTagged[
kTAGHAD] += mx_calib_tot;
833 engClusSumCalibTagged[
kTAGUNK] += mx_calib_tot;
840 engClusSumCalib += mx_calib_tot;
841 engClusSumCalibPresOnly += (mx_calib_emb0+mx_calib_eme0+mx_calib_tileg3);
842 engClusSumTrueOOC += mx_calib_out;
843 engClusSumTrueDM += mx_calib_dead_tot;
845 theCluster = clusCollVector[i_coll]->at(iClus);
846 engClusSum[i_coll] += theCluster->e();
855 theCluster = clusCollVector[i_coll]->at(iClus);
864 if(nGoodClus == 0)
return 0;
873 double enom = engClusSum[i_coll];
874 if(i_coll !=
kTOPO) {
875 enom = enom - engClusSumPresOnly[i_coll];
883 double edenom = engClusSumCalib - engClusSumCalibPresOnly;
885 edenom += engClusSumTrueOOC;
886 }
else if(i_coll ==
kTOPO){
887 edenom += (engClusSumTrueOOC + engClusSumTrueDM);
895 enom = engClusSum[i_coll] - engClusSumPresOnly[i_coll];
898 enom = engClusSumCalib - engClusSumCalibPresOnly + engClusSumRecoOOC;
899 }
else if(i_coll ==
kTOPO){
901 enom = (engClusSumCalib - engClusSumCalibPresOnly) + engClusSumTrueOOC + engClusSumRecoDM;
914 if(engClusSumCalib!=0.0) {
915 const double inv_engClusSumCalib = 1. / engClusSumCalib;
928 double enom = engClusSum[i_coll];
929 if(i_coll !=
kTOPO) {
930 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
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