#include "AddOns/Analysis/Triggers/Primitive_Calorimeter.H" #include "ATOOLS/Phys/Particle_List.H" #include "AddOns/Analysis/Tools/Particle_Qualifier.H" #include "ATOOLS/Math/MathTools.H" using namespace ANALYSIS; using namespace ATOOLS; Primitive_Calorimeter::Primitive_Calorimeter(const double mineta,const double maxeta, const int neta,const int nphi, const std::string qualifier) : Primitive_Detector_Element(neta,nphi,std::string("Hadronic Calorimeter")), m_mineta(mineta), m_maxeta(maxeta), p_qualifier(NULL) { p_qualifier = ATOOLS::Particle_Qualifier_Getter::GetObject(qualifier,qualifier); m_delta_eta = (m_maxeta-m_mineta)/double(m_nx); m_delta_phi = 2.*M_PI/double(m_ny); p_costheta = new double[m_nx]; p_sintheta = new double[m_nx]; for (int i=0; i0) phi = 0.5*M_PI; else phi = 1.5*M_PI; } else { phi = atan2(p[1],p[2]); if (phi<0) phi+=2.*M_PI; } /* std::cout<<"Check : "<" <" <begin(); it!=pl->end();++it) { if (p_qualifier!=NULL && !(*p_qualifier)(*it)) continue; if (!((*it)->Flav().IsLepton())) { double phi = 0; double y = PseudoRapidityNAzimuthalAngle((*it)->Momentum(),phi); double E = (*it)->Momentum()[0]; SmearEnergy((*it)->Flav(),E); int i = int((y-m_mineta)/m_delta_eta); int j = int(phi/m_delta_phi); if (i>=0&&ipush_back(track); } } } } Primitive_Detector_Element * Primitive_Calorimeter::Copy() const { return new Primitive_Calorimeter(m_mineta,m_maxeta,m_nx,m_ny); } void Primitive_Calorimeter::Print(std::ostream & s) { s<<" Primitive_Calorimeter "<0.) s<