#ifndef CALOREC_CBNTAA_CALOCLUSTER_H #define CALOREC_CBNTAA_CALOCLUSTER_H // // CBNTAA_CaloCluster: // Make Athena-Aware Ntuple for CaloClusters // #include "CBNT_Utils/CBNT_AthenaAwareBase.h" #include "TMatrix.h" #include "GaudiKernel/NTuple.h" class CaloCell_ID; class CaloDetDescrManager; class ICalorimeterNoiseTool; class CBNTAA_CaloCluster: public CBNT_AthenaAwareBase { public: CBNTAA_CaloCluster(const std::string& name, ISvcLocator* pSvcLocator); virtual ~CBNTAA_CaloCluster(); StatusCode CBNT_initialize(); StatusCode CBNT_execute(); StatusCode CBNT_finalize(); StatusCode CBNT_clear(); private: StatusCode accessNtuple(); float GetAveEta(float tempeta, float eta1,float ene1,float eta2,float ene2); bool m_central; bool m_endcap; bool m_addcells; std::string m_ClusterCollName; //Cluster container std::string m_NtupleLocID; //Ntuple ID int m_maxCluster; // maximum number of Clusters float m_e_emb0_temp,m_e_emb1_temp,m_e_emb2_temp,m_e_emb3_temp; float m_e_eme0_temp,m_e_eme1_temp,m_e_eme2_temp,m_e_eme3_temp; // variables to be in ntuple. long m_nc; // up to the maximum of clusters long m_nctotal; // all clusters, even if > maxCluster float m_eCluster; std::vector* m_e; std::vector* m_et; std::vector* m_eta; std::vector* m_phi; //LH Added std::vector* m_cell_x; std::vector* m_cell_y; std::vector* m_cell_id; std::vector* m_e_emb0; std::vector* m_e_emb1; std::vector* m_e_emb2; std::vector* m_e_emb3; std::vector* m_phi2; std::vector* m_eta0; std::vector* m_eta1; std::vector* m_eta2; std::vector* m_eta3; std::vector* m_e_eme0; std::vector* m_e_eme1; std::vector* m_e_eme2; std::vector* m_e_eme3; std::vector* m_e_hec0; std::vector* m_e_hec1; std::vector* m_e_hec2; std::vector* m_e_hec3; std::vector* m_e_tileb0; std::vector* m_e_tileb1; std::vector* m_e_tileb2; std::vector* m_e_tileg1; std::vector* m_e_tileg2; std::vector* m_e_tileg3; std::vector* m_e_tilee0; std::vector* m_e_tilee1; std::vector* m_e_tilee2; std::vector* m_e_fcal0; std::vector* m_e_fcal1; std::vector* m_e_fcal2; std::vector* m_n_emb0; std::vector* m_n_emb1; std::vector* m_n_emb2; std::vector* m_n_emb3; std::vector* m_n_eme0; std::vector* m_n_eme1; std::vector* m_n_eme2; std::vector* m_n_eme3; std::vector* m_n_hec0; std::vector* m_n_hec1; std::vector* m_n_hec2; std::vector* m_n_hec3; std::vector* m_n_tileb0; std::vector* m_n_tileb1; std::vector* m_n_tileb2; std::vector* m_n_tileg1; std::vector* m_n_tileg2; std::vector* m_n_tileg3; std::vector* m_n_tilee0; std::vector* m_n_tilee1; std::vector* m_n_tilee2; std::vector* m_n_fcal0; std::vector* m_n_fcal1; std::vector* m_n_fcal2; TMatrix* m_clu_cells; std::vector* m_ntotcells; // NTuple::Tuple* m_ntp; std::string m_suffix; bool m_emOnly; bool m_addcelldetails; bool m_addcelldetailsnoise; std::string m_CaloNoiseToolName; //Noise Tool Name in case noise info //should be added to the cell details int m_maxCell; // maximum number of Cells bool m_useLink; // whether or not to use the second // moment store (not available on AOD) const CaloCell_ID* m_calo_id; const CaloDetDescrManager* m_calo_dd_man; ICalorimeterNoiseTool * m_noiseTool; std::vector* m_reco_stat; std::vector* m_m1_eta; std::vector* m_m1_phi; std::vector* m_m2_r; std::vector* m_m2_lambda; std::vector* m_delta_phi; std::vector* m_delta_theta; std::vector* m_delta_alpha; std::vector* m_center_x; std::vector* m_center_y; std::vector* m_center_z; std::vector* m_center_lambda; std::vector* m_lateral; std::vector* m_longitudinal; std::vector* m_eng_frac_em; std::vector* m_eng_frac_max; std::vector* m_eng_frac_core; std::vector* m_m1_dens; std::vector* m_m2_dens; std::vector* m_isol; long m_ncells; // up to maxCell long m_ncellstotal; // all cells, even if > maxCell std::vector* m_cell_eng; std::vector* m_cell_et; std::vector* m_cell_time; std::vector* m_cell_quality; std::vector* m_cell_weight; std::vector* m_cell_eta; std::vector* m_cell_phi; std::vector* m_cell_r; std::vector* m_cell_z; std::vector* m_cell_deta; std::vector* m_cell_dphi; std::vector* m_cell_dr; std::vector* m_cell_dz; std::vector* m_cell_vol; std::vector* m_cell_noise; std::vector* m_cell_totnoise; std::vector* m_cell_gain; std::vector* m_cell_cluster; std::vector* m_cell_calo; // 0=EM, 1 =HEC, 2=FCAL, 3=TILE std::vector* m_cell_side; // -3,-2,-1,+1,+2,+3 std::vector* m_cell_ireg; // 0-5 (system for Tile: 1-3) std::vector* m_cell_samp; // sampling 0-3 std::vector* m_cell_ieta; // ieta 0-447 (tower for Tile) std::vector* m_cell_iphi; // iphi 0-255 (module for Tile) }; #endif