00001 #ifndef FORIA_CLUSTERSELECTION_HH 00002 #define FORIA_CLUSTERSELECTION_HH 00003 00004 #include "ForIA/Cluster.hh" 00005 #include "ForIA/Event.hh" 00006 00007 #include "ForIA/AnalysisTools/FourVectorSelection.hh" 00008 #include "ForIA/AnalysisTools/EnergyRescaler.hh" 00009 #include <ostream> 00010 00011 namespace ForIA{ 00012 00013 class MessageBox; 00014 00015 class ClusterSelection : public FourVectorSelection{ 00016 00017 public: 00018 00019 ClusterSelection(); 00020 00021 const ClusterVector &acceptedClusters() const; 00022 00023 const ClusterVector &rejectedClusters() const; 00024 00025 enum DefinedSelection{LOOSE, MEDIUM, TIGHT}; 00026 00027 bool setSelection(DefinedSelection selection); 00028 00029 // Set scale 00030 bool setScale(Cluster::Energy scale); 00031 // Set minimum ET 00032 bool setETMin(double et); 00033 // Set minimum E 00034 bool setEMin(double e); 00035 // Set minimum eta 00036 bool setEtaMin(double eta); 00037 // Set maximum eta 00038 bool setEtaMax(double eta); 00039 // ToDo: set minimum HAD component, minimum EM ? 00040 bool setEmFrac(double emFrac); 00041 00042 bool setEmFracSpike(double emFracSpike); 00043 00044 void setSmearE(bool smear); 00045 00046 00047 void setUseEMScale(bool useEMScale); 00048 void setScaleMCClusterEType(std::string scaleType); 00049 double scaleFactor (float eta) const; 00050 private: 00051 00052 friend std::ostream &operator << (std::ostream &out, const ClusterSelection &selection); 00053 friend MessageBox &operator << (MessageBox &box, const ClusterSelection &selection); 00054 00055 void fillVectors() const; 00056 00057 mutable ClusterVector m_acceptedClusters; 00058 mutable ClusterVector m_rejectedClusters; 00059 00060 00061 Cluster::Energy m_scale; 00062 double m_etMin; 00063 double m_eMin; 00064 double m_etaMin; 00065 double m_etaMax; 00066 double m_emFrac; 00067 double m_emFracSpike; 00068 00069 bool m_haveSetscale; 00070 bool m_haveSetetMin; 00071 bool m_haveSeteMin; 00072 bool m_haveSetetaMin; 00073 bool m_haveSetetaMax; 00074 bool m_haveSetEmFrac; 00075 bool m_haveSetEmFracSpike; 00076 bool m_smearE; 00077 std::string m_scaleMCEType; 00078 bool m_useEMScale; 00079 00080 mutable EnergyRescaler m_eScale; 00081 00082 }; 00083 00084 } 00085 00086 #endif