00001 #ifndef SimTransport_Hector_h
00002 #define SimTransport_Hector_h
00003
00004
00005 #include "FWCore/Framework/interface/EventSetup.h"
00006 #include "FWCore/Framework/interface/ESHandle.h"
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"
00019
00020 #include "HepMC/GenEvent.h"
00021 #include "HepMC/GenVertex.h"
00022 #include "HepMC/GenParticle.h"
00023 #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h"
00024
00025
00026 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00027
00028
00029 #include "H_BeamLine.h"
00030 #include "H_RecRPObject.h"
00031 #include "H_BeamParticle.h"
00032 #include <string>
00033
00034 class Hector {
00035
00036 public:
00037
00038 Hector(const edm::ParameterSet & ps, bool verbosity, bool FP420Transport,bool ZDCTransport);
00039
00040 virtual ~Hector();
00041
00043 void clearApertureFlags();
00045 void clear();
00047 void add( const HepMC::GenEvent * ev , const edm::EventSetup & es);
00049 void filterFP420();
00051 void filterZDC();
00053 void filterD1();
00054
00055 int getDirect( unsigned int part_n ) const;
00056
00058 void print() const;
00060
00061
00062
00063
00064 HepMC::GenEvent * addPartToHepMC( HepMC::GenEvent * event );
00065
00066
00067
00068
00069
00070 private:
00071
00072
00073
00074 double lengthfp420 ;
00075 double lengthzdc ;
00076 double lengthd1 ;
00077
00078 double etacut;
00079 bool m_smearAng;
00080 double m_sig_e;
00081 bool m_smearE;
00082 double m_sigmaSTX;
00083 double m_sigmaSTY;
00084
00085 float m_rpp420_f;
00086 float m_rpp420_b;
00087 float m_rppzdc;
00088 float m_rppd1;
00089
00090
00091 edm::ESHandle < ParticleDataTable > pdt;
00092
00093
00094 H_BeamLine * m_beamlineFP4201;
00095 H_BeamLine * m_beamlineFP4202;
00096 H_BeamLine * m_beamlineZDC1;
00097 H_BeamLine * m_beamlineZDC2;
00098 H_BeamLine * m_beamlineD11;
00099 H_BeamLine * m_beamlineD12;
00100
00101
00102 H_RecRPObject * m_rp420_f;
00103 H_RecRPObject * m_rp420_b;
00104
00105 std::map<unsigned int, H_BeamParticle*> m_beamPart;
00106 std::map<unsigned int, int> m_direct;
00107 std::map<unsigned int, bool> m_isStoppedfp420;
00108 std::map<unsigned int, bool> m_isStoppedzdc;
00109 std::map<unsigned int, bool> m_isStoppedd1;
00110 std::map<unsigned int, double> m_xAtTrPoint;
00111 std::map<unsigned int, double> m_yAtTrPoint;
00112 std::map<unsigned int, double> m_TxAtTrPoint;
00113 std::map<unsigned int, double> m_TyAtTrPoint;
00114 std::map<unsigned int, double> m_eAtTrPoint;
00115
00116 std::map<unsigned int, double> m_eta;
00117 std::map<unsigned int, int> m_pdg;
00118 std::map<unsigned int, double> m_pz;
00119 std::map<unsigned int, bool> m_isCharged;
00120
00121 string beam1filename;
00122 string beam2filename;
00123
00124 bool m_verbosity;
00125 bool m_FP420Transport;
00126 bool m_ZDCTransport;
00127
00128 };
00129 #endif