• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

/Users/jmonk/Physics/ForIA/ForIA/Cluster.hh

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     // Default constructor
00046     Cluster();
00047 
00048     // Energy
00049     double E() const;
00050     // EM/HAD energy
00051     double E(Energy e) const;
00052     // Energy in CaloLayers
00053     double E(CaloLayer layer) const;
00054     // Transverse energy
00055     double ET() const;
00056     // PT
00057     double PT() const;
00058     // theta
00059     double theta() const;
00060     // Phi
00061     double phi() const;
00062     // Phi in CaloLayers
00063     double phi(CaloLayer layer) const;
00064     // Eta
00065     double eta() const;
00066     //Eta in CaloLayers
00067     double eta(CaloLayer layer) const;
00068     // Mass
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     //@todo: why is this const!
00091     void scaleEnergy(double scaleFactor) const ;    
00092     //@todo: why is this const!
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

Generated on Mon Jul 30 2012 16:56:35 for ForIA by  doxygen 1.7.2