Go to the documentation of this file.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/GeneratorProducts/interface/HepMCProduct.h"
00024
00025 #include "SimDataFormats/Forward/interface/LHCTransportLink.h"
00026 #include <vector>
00027
00028
00029 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00030
00031
00032 #include "H_BeamLine.h"
00033 #include "H_RecRPObject.h"
00034 #include "H_BeamParticle.h"
00035 #include <string>
00036 #include <map>
00037
00038 #include "TRandom3.h"
00039
00040 class Hector {
00041
00042 public:
00043
00044 Hector(const edm::ParameterSet & ps, bool verbosity, bool FP420Transport,bool ZDCTransport);
00045
00046 virtual ~Hector();
00047
00049 void clearApertureFlags();
00051 void clear();
00053 void add( const HepMC::GenEvent * ev , const edm::EventSetup & es);
00055 void filterFP420();
00057 void filterZDC();
00059 void filterD1();
00060
00061 int getDirect( unsigned int part_n ) const;
00062
00064 void print() const;
00066
00067
00068
00069
00070 HepMC::GenEvent * addPartToHepMC( HepMC::GenEvent * event );
00071
00072 std::vector<LHCTransportLink> & getCorrespondenceMap() { return theCorrespondenceMap; }
00073
00074
00075
00076
00077
00078 private:
00079
00080
00081
00082 double lengthfp420 ;
00083 double lengthzdc ;
00084 double lengthd1 ;
00085
00086 double etacut;
00087 bool m_smearAng;
00088 double m_sig_e;
00089 bool m_smearE;
00090 double m_sigmaSTX;
00091 double m_sigmaSTY;
00092
00093 float m_rpp420_f;
00094 float m_rpp420_b;
00095 float m_rppzdc;
00096 float m_rppd1;
00097
00098 edm::ESHandle < ParticleDataTable > pdt;
00099
00100
00101 H_BeamLine * m_beamlineFP4201;
00102 H_BeamLine * m_beamlineFP4202;
00103 H_BeamLine * m_beamlineZDC1;
00104 H_BeamLine * m_beamlineZDC2;
00105 H_BeamLine * m_beamlineD11;
00106 H_BeamLine * m_beamlineD12;
00107
00108
00109 H_RecRPObject * m_rp420_f;
00110 H_RecRPObject * m_rp420_b;
00111
00112 std::map<unsigned int, H_BeamParticle*> m_beamPart;
00113 std::map<unsigned int, int> m_direct;
00114 std::map<unsigned int, bool> m_isStoppedfp420;
00115 std::map<unsigned int, bool> m_isStoppedzdc;
00116 std::map<unsigned int, bool> m_isStoppedd1;
00117 std::map<unsigned int, double> m_xAtTrPoint;
00118 std::map<unsigned int, double> m_yAtTrPoint;
00119 std::map<unsigned int, double> m_TxAtTrPoint;
00120 std::map<unsigned int, double> m_TyAtTrPoint;
00121 std::map<unsigned int, double> m_eAtTrPoint;
00122
00123 std::map<unsigned int, double> m_eta;
00124 std::map<unsigned int, int> m_pdg;
00125 std::map<unsigned int, double> m_pz;
00126 std::map<unsigned int, bool> m_isCharged;
00127
00128 string beam1filename;
00129 string beam2filename;
00130
00131 bool m_verbosity;
00132 bool m_FP420Transport;
00133 bool m_ZDCTransport;
00134
00135 std::vector<LHCTransportLink> theCorrespondenceMap;
00136
00137 TRandom3* rootEngine_;
00138
00139 };
00140 #endif