9 #include "HepMC/GenEvent.h" 10 #include "HepMC/IO_HEPEVT.h" 11 #include "HepMC/HEPEVT_Wrapper.h" 17 #include "Photos/Photos.h" 18 #include "Photos/PhotosHepMCEvent.h" 24 fAvoidTauLeptonicDecays(
false),
25 fIsInitialized(
false),
29 bool UseHadronizerQEDBrem=
false;
31 std::vector<std::string> par =
fPSet->
getParameter< std::vector<std::string> >(
"parameterSets");
32 for (
unsigned int ip=0; ip<par.size(); ++ip ){
35 if(curSet==
"UseHadronizerQEDBrem") UseHadronizerQEDBrem=
true;
51 Photospp::Photos::createHistoryEntries(
true, 746);
52 std::vector<std::string> par =
fPSet->
getParameter< std::vector<std::string> >(
"parameterSets");
53 for (
unsigned int ip=0; ip<par.size(); ++ip ){
57 if(curSet==
"maxWtInterference") Photospp::Photos::maxWtInterference(
fPSet->
getParameter<
double>(curSet));
58 if(curSet==
"setInfraredCutOff") Photospp::Photos::setInfraredCutOff(
fPSet->
getParameter<
double>(curSet));
59 if(curSet==
"setAlphaQED") Photospp::Photos::setAlphaQED(
fPSet->
getParameter<
double>(curSet));
60 if(curSet==
"setInterference") Photospp::Photos::setInterference(
fPSet->
getParameter<
bool>(curSet));
61 if(curSet==
"setDoubleBrem") Photospp::Photos::setDoubleBrem(
fPSet->
getParameter<
bool>(curSet));
62 if(curSet==
"setQuatroBrem") Photospp::Photos::setQuatroBrem(
fPSet->
getParameter<
bool>(curSet));
63 if(curSet==
"setExponentiation") Photospp::Photos::setExponentiation(
fPSet->
getParameter<
bool>(curSet));
64 if(curSet==
"setCorrectionWtForW") Photospp::Photos::setCorrectionWtForW(
fPSet->
getParameter<
bool>(curSet));
65 if(curSet==
"setMeCorrectionWtForScalar") Photospp::Photos::setMeCorrectionWtForScalar(
fPSet->
getParameter<
bool>(curSet));
66 if(curSet==
"setMeCorrectionWtForW") Photospp::Photos::setMeCorrectionWtForW(
fPSet->
getParameter<
bool>(curSet));
67 if(curSet==
"setMeCorrectionWtForZ") Photospp::Photos::setMeCorrectionWtForZ(
fPSet->
getParameter<
bool>(curSet));
68 if(curSet==
"initializeKinematicCorrections") Photospp::Photos::initializeKinematicCorrections(
fPSet->
getParameter<
int>(curSet));
69 if(curSet==
"forceMassFrom4Vector") Photospp::Photos::forceMassFrom4Vector(
fPSet->
getParameter<
bool>(curSet));
70 if(curSet==
"forceMassFromEventRecord") Photospp::Photos::forceMassFromEventRecord(
fPSet->
getParameter<
int>(curSet));
71 if(curSet==
"ignoreParticlesOfStatus") Photospp::Photos::ignoreParticlesOfStatus(
fPSet->
getParameter<
int>(curSet));
72 if(curSet==
"deIgnoreParticlesOfStatus") Photospp::Photos::deIgnoreParticlesOfStatus(
fPSet->
getParameter<
int>(curSet));
73 if(curSet==
"setMomentumConservationThreshold") Photospp::Photos::setMomentumConservationThreshold(
fPSet->
getParameter<
double>(curSet));
74 if(curSet==
"suppressAll")
if(
fPSet->
getParameter<
bool>(curSet)==
true)Photospp::Photos::suppressAll();
75 if(curSet==
"setPairEmission") Photospp::Photos::setPairEmission(
fPSet->
getParameter<
bool>(curSet));
76 if(curSet==
"setPhotonEmission") Photospp::Photos::setPhotonEmission(
fPSet->
getParameter<
bool>(curSet));
77 if(curSet==
"setStopAtCriticalError") Photospp::Photos::setStopAtCriticalError(
fPSet->
getParameter<
bool>(curSet));
78 if (curSet ==
"createHistoryEntries") Photospp::Photos::createHistoryEntries(
fPSet->
getParameter<
bool>(curSet), 746);
81 if(curSet==
"suppressBremForBranch"){
83 std::vector<std::string>
v = cfg.
getParameter<std::vector<std::string> >(
"parameterSets");
84 for(
unsigned int i=0;
i<v.size();
i++){
86 std::vector<int> vpar = cfg.
getParameter<std::vector<int> >(vs);
87 if(vpar.size()==1) Photospp::Photos::suppressBremForBranch(0,vpar[0]);
88 if(vpar.size()==2) Photospp::Photos::suppressBremForBranch(0,vpar[1]);
89 if(vpar.size()==3) Photospp::Photos::suppressBremForBranch(vpar[0],vpar[1],vpar[2]);
90 if(vpar.size()==4) Photospp::Photos::suppressBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3]);
91 if(vpar.size()==5) Photospp::Photos::suppressBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4]);
92 if(vpar.size()==6) Photospp::Photos::suppressBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5]);
93 if(vpar.size()==7) Photospp::Photos::suppressBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6]);
94 if(vpar.size()==8) Photospp::Photos::suppressBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6],vpar[7]);
95 if(vpar.size()==9) Photospp::Photos::suppressBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6],vpar[7],vpar[8]);
96 if(vpar.size()==10) Photospp::Photos::suppressBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6],vpar[7],vpar[8],vpar[9]);
99 if(curSet==
"suppressBremForDecay"){
101 std::vector<std::string>
v = cfg.
getParameter<std::vector<std::string> >(
"parameterSets");
102 for(
unsigned int i=0;
i<v.size();
i++){
104 std::vector<int> vpar = cfg.
getParameter<std::vector<int> >(vs);
105 if(vpar.size()==1) Photospp::Photos::suppressBremForDecay(0,vpar[0]);
106 if(vpar.size()==2) Photospp::Photos::suppressBremForDecay(0,vpar[1]);
107 if(vpar.size()==3) Photospp::Photos::suppressBremForDecay(vpar[0],vpar[1],vpar[2]);
108 if(vpar.size()==4) Photospp::Photos::suppressBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3]);
109 if(vpar.size()==5) Photospp::Photos::suppressBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4]);
110 if(vpar.size()==6) Photospp::Photos::suppressBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5]);
111 if(vpar.size()==7) Photospp::Photos::suppressBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6]);
112 if(vpar.size()==8) Photospp::Photos::suppressBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6],vpar[7]);
113 if(vpar.size()==9) Photospp::Photos::suppressBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6],vpar[7],vpar[8]);
114 if(vpar.size()==10) Photospp::Photos::suppressBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6],vpar[7],vpar[8],vpar[9]);
118 if(curSet==
"forceBremForBranch"){
120 std::vector<std::string>
v = cfg.
getParameter<std::vector<std::string> >(
"parameterSets");
121 for(
unsigned int i=0;
i<v.size();
i++){
123 std::vector<int> vpar = cfg.
getParameter<std::vector<int> >(vs);
124 if(vpar.size()==1) Photospp::Photos::forceBremForBranch(0,vpar[0]);
125 if(vpar.size()==2) Photospp::Photos::forceBremForBranch(0,vpar[1]);
126 if(vpar.size()==3) Photospp::Photos::forceBremForBranch(vpar[0],vpar[1],vpar[2]);
127 if(vpar.size()==4) Photospp::Photos::forceBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3]);
128 if(vpar.size()==5) Photospp::Photos::forceBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4]);
129 if(vpar.size()==6) Photospp::Photos::forceBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5]);
130 if(vpar.size()==7) Photospp::Photos::forceBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6]);
131 if(vpar.size()==8) Photospp::Photos::forceBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6],vpar[7]);
132 if(vpar.size()==9) Photospp::Photos::forceBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6],vpar[7],vpar[8]);
133 if(vpar.size()==10) Photospp::Photos::forceBremForBranch(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6],vpar[7],vpar[8],vpar[9]);
136 if(curSet==
"forceBremForDecay"){
138 std::vector<std::string>
v = cfg.
getParameter<std::vector<std::string> >(
"parameterSets");
139 for(
unsigned int i=0;
i<v.size();
i++){
141 std::vector<int> vpar = cfg.
getParameter<std::vector<int> >(vs);
142 if(vpar.size()==1) Photospp::Photos::forceBremForDecay(0,vpar[0]);
143 if(vpar.size()==2) Photospp::Photos::forceBremForDecay(0,vpar[1]);
144 if(vpar.size()==3) Photospp::Photos::forceBremForDecay(vpar[0],vpar[1],vpar[2]);
145 if(vpar.size()==4) Photospp::Photos::forceBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3]);
146 if(vpar.size()==5) Photospp::Photos::forceBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4]);
147 if(vpar.size()==6) Photospp::Photos::forceBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5]);
148 if(vpar.size()==7) Photospp::Photos::forceBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6]);
149 if(vpar.size()==8) Photospp::Photos::forceBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6],vpar[7]);
150 if(vpar.size()==9) Photospp::Photos::forceBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6],vpar[7],vpar[8]);
151 if(vpar.size()==10) Photospp::Photos::forceBremForDecay(vpar[0],vpar[1],vpar[2],vpar[3],vpar[4],vpar[5],vpar[6],vpar[7],vpar[8],vpar[9]);
155 if(curSet==
"forceMass"){
157 std::vector<std::string>
v = cfg.
getParameter<std::vector<std::string> >(
"parameterSets");
158 for(
unsigned int i=0;
i<v.size();
i++){
160 std::vector<double> vpar = cfg.
getParameter<std::vector<double> >(vs);
161 if(vpar.size()==2) Photospp::Photos::forceMass((
int)vpar[0], vpar[1]);
167 Photospp::Photos::suppressAll();
168 Photospp::Photos::forceBremForBranch(0,
fOnlyPDG);
169 Photospp::Photos::forceBremForBranch(0,-1*
fOnlyPDG);
172 Photospp::Photos::suppressBremForDecay(3, 15, 16, 11, -12);
173 Photospp::Photos::suppressBremForDecay(3, -15, -16, -11, 12);
174 Photospp::Photos::suppressBremForDecay(3, 15, 16, 13, -14);
175 Photospp::Photos::suppressBremForDecay(3, -15, -16, -13, -14);
177 Photospp::Photos::iniInfo();
185 int NPartBefore = evt->particles_size();
186 Photospp::PhotosHepMCEvent PhotosEvt(evt);
189 for (HepMC::GenEvent::vertex_const_iterator
vtx=evt->vertices_begin();
vtx!=evt->vertices_end();
vtx++ ){
190 std::vector<int> BCodes;
194 if((*pitr)->barcode()>10000){
195 BCodes.push_back((*pitr)->barcode());
199 if(BCodes.size() > 0){
200 for(
size_t ibc=0; ibc<BCodes.size(); ibc++){
202 int nbc = p1->barcode() - 10000 + NPartBefore;
203 p1->suggest_barcode(nbc);
213 <<
"PhotosppInterface::flat: Attempt to generate random number when engine pointer is null\n" 214 <<
"This might mean that the code was modified to generate a random number outside the\n" 215 <<
"event and beginLuminosityBlock methods, which is not allowed.\n";
T getParameter(std::string const &) const
static AlgebraicMatrix initialize()
void setRandomEngine(CLHEP::HepRandomEngine *decayRandomEngine)
static CLHEP::HepRandomEngine * fRandomEngine
CLHEP::HepRandomEngine * decayRandomEngine
PhotosppInterface(const edm::ParameterSet &pset)
edm::ParameterSet * fPSet
HepMC::GenEvent * apply(HepMC::GenEvent *)
void configureOnlyFor(int)
bool fAvoidTauLeptonicDecays
#define DEFINE_EDM_PLUGIN(factory, type, name)
std::vector< std::string > fSpecialSettings