Go to the documentation of this file.00001 #ifndef FORIA_CLUSTER_HH
00002 #define FORIA_CLUSTER_HH
00003
00004 #include "ForIA/IFourMomentum.hh"
00005 #include "boost/smart_ptr.hpp"
00006 #include <vector>
00007 #include <iostream>
00008
00009
00010 namespace ForIA{
00011
00012 using std::vector;
00013
00014 class Cluster: public IFourMomentum{
00015
00016
00017 public:
00018
00019 enum Energy{CALIB,EMSCALE,EM,HAD};
00020 enum CaloLayer{EMB1,
00021 EMB2,
00022 EMB3,
00023 EME1,
00024 EME2,
00025 EME3,
00026 FCAL0,
00027 FCAL1,
00028 FCAL2,
00029 HEC0,
00030 HEC1,
00031 HEC2,
00032 HEC3,
00033 PreSamplerB,
00034 PreSamplerE,
00035 TileBar0,
00036 TileBar1,
00037 TileBar2,
00038 TileExt0,
00039 TileExt1,
00040 TileExt2,
00041 TileGap1,
00042 TileGap2,
00043 TileGap3};
00044
00045
00046 Cluster();
00047
00048
00049 double E() const;
00050
00051 double E(Energy e) const;
00052
00053 double E(CaloLayer layer) const;
00054
00055 double ET() const;
00056
00057 double PT() const;
00058
00059 double theta() const;
00060
00061 double phi() const;
00062
00063 double phi(CaloLayer layer) const;
00064
00065 double eta() const;
00066
00067 double eta(CaloLayer layer) const;
00068
00069 double M() const;
00070
00071 double px()const;
00072 double py()const;
00073 double pz()const;
00074
00075
00076 bool hasCaloLayerEnergies() const;
00077 bool hasClusterMoments() const;
00078 double cellMaxFrac() const;
00079 double centerLambda() const;
00080 double firstEdens() const;
00081 double lateral() const;
00082 double longitudinal() const;
00083 double secondR() const;
00084 double secondLambda() const;
00085 double time() const;
00086 double deltaPhi() const;
00087 double deltaTheta() const;
00088
00089 bool isMC() const {return m_clusIsMC;};
00090
00091 void scaleEnergy(double scaleFactor) const ;
00092
00093 void setUseEMScale(bool useEmScale) const;
00094
00095 private:
00096
00097 friend std::ostream &operator << (std::ostream &out, const Cluster &clus);
00098 friend class DataConverter;
00099
00100 bool m_clusIsMC;
00101
00102 mutable bool m_useEMScale;
00103
00104 mutable double m_E_calib;
00105 mutable double m_E_em;
00106 mutable double m_E_had;
00107 mutable double m_ET;
00108 mutable double m_PT;
00109 double m_phi;
00110 double m_eta;
00111 mutable double m_M;
00112
00113 mutable double m_px;
00114 mutable double m_py;
00115 mutable double m_pz;
00116 mutable bool m_gotpx;
00117 mutable bool m_gotpy;
00118 mutable bool m_gotpz;
00119
00120
00121 bool m_hasCaloLayerEnergies;
00122 double m_E_EMB1;
00123 double m_E_EMB2;
00124 double m_E_EMB3;
00125 double m_E_EME1;
00126 double m_E_EME2;
00127 double m_E_EME3;
00128 double m_E_HEC0;
00129 double m_E_HEC1;
00130 double m_E_HEC2;
00131 double m_E_HEC3;
00132 double m_E_FCAL0;
00133 double m_E_FCAL1;
00134 double m_E_FCAL2;
00135 double m_E_PreSamplerB;
00136 double m_E_PreSamplerE;
00137 double m_E_TileBar0;
00138 double m_E_TileBar1;
00139 double m_E_TileBar2;
00140 double m_E_TileExt0;
00141 double m_E_TileExt1;
00142 double m_E_TileExt2;
00143 double m_E_TileGap1;
00144 double m_E_TileGap2;
00145 double m_E_TileGap3;
00146
00147 double m_phi_EMB1;
00148 double m_phi_EMB2;
00149 double m_phi_EMB3;
00150 double m_phi_EME1;
00151 double m_phi_EME2;
00152 double m_phi_EME3;
00153 double m_phi_HEC0;
00154 double m_phi_HEC1;
00155 double m_phi_HEC2;
00156 double m_phi_HEC3;
00157 double m_phi_FCAL0;
00158 double m_phi_FCAL1;
00159 double m_phi_FCAL2;
00160 double m_phi_PreSamplerB;
00161 double m_phi_PreSamplerE;
00162 double m_phi_TileBar0;
00163 double m_phi_TileBar1;
00164 double m_phi_TileBar2;
00165 double m_phi_TileExt0;
00166 double m_phi_TileExt1;
00167 double m_phi_TileExt2;
00168 double m_phi_TileGap1;
00169 double m_phi_TileGap2;
00170 double m_phi_TileGap3;
00171
00172 double m_eta_EMB1;
00173 double m_eta_EMB2;
00174 double m_eta_EMB3;
00175 double m_eta_EME1;
00176 double m_eta_EME2;
00177 double m_eta_EME3;
00178 double m_eta_HEC0;
00179 double m_eta_HEC1;
00180 double m_eta_HEC2;
00181 double m_eta_HEC3;
00182 double m_eta_FCAL0;
00183 double m_eta_FCAL1;
00184 double m_eta_FCAL2;
00185 double m_eta_PreSamplerB;
00186 double m_eta_PreSamplerE;
00187 double m_eta_TileBar0;
00188 double m_eta_TileBar1;
00189 double m_eta_TileBar2;
00190 double m_eta_TileExt0;
00191 double m_eta_TileExt1;
00192 double m_eta_TileExt2;
00193 double m_eta_TileGap1;
00194 double m_eta_TileGap2;
00195 double m_eta_TileGap3;
00196
00197 bool m_hasClusterMoments;
00198 double m_cellmaxfrac;
00199 double m_centerlambda;
00200 double m_firstEdens;
00201 double m_lateral;
00202 double m_longitudinal;
00203 double m_secondR;
00204 double m_secondlambda;
00205 double m_time;
00206 double m_deltaPhi;
00207 double m_deltaTheta;
00208
00209
00210 };
00211
00212 typedef boost::shared_ptr<Cluster> ClusterPtr;
00213 typedef boost::shared_ptr<Cluster const> ClusterConstPtr;
00214 typedef vector<ClusterConstPtr> ClusterVector;
00215
00216 }
00217 #endif