169 {
171
172 const static std::vector<TString> gen_mc_generator_keys = {"PYTHIA8EVTGEN517","POWHEGHERWIG7","PHH7EG","SHERPA_2210","SHERPA_2211","SHERPA_2212","SHERPA_2214","SHERPA_UNKNOWN"};
173 const static std::vector<TString> gen_mc_generator_keys_dl1d = {"POWHEGHERWIG7","PHH7EG", "SHERPA_221_", "SHERPA_2210","SHERPA_2211","SHERPA_2212", "AMCATNLOPY8","AMCATNLOHERWIG7"};
174
175
176 TString tmp_name(sample_name);
177
178 if(tmp_name.Contains("Py8EG") && !tmp_name.Contains("aMcAtNloPy8EG")) tmp_name.ReplaceAll("Py8EG","PYTHIA8EVTGEN");
179 if(tmp_name.Contains("Pythia") && !tmp_name.Contains("Pythia8") && !tmp_name.Contains("EvtGen")) tmp_name.ReplaceAll("Pythia","PYTHIA8EVTGEN");
180 if(tmp_name.Contains("Pythia8") && !tmp_name.Contains("EvtGen")) tmp_name.ReplaceAll("Pythia8","PYTHIA8EVTGEN");
181 if(tmp_name.Contains("Py8") && !tmp_name.Contains("EG")) tmp_name.ReplaceAll("Py8","PYTHIA8EVTGEN");
182 if(tmp_name.Contains("Sh_2")) tmp_name.ReplaceAll("Sh_2","SHERPA_2");
183 if(tmp_name.Contains("Sh_") && !tmp_name.Contains("Sh_2")) tmp_name.ReplaceAll("Sh_","SHERPA_UNKNOWN_");
184 if(tmp_name.Contains("Sherpa_") && !tmp_name.Contains("Sherpa_2")) tmp_name.ReplaceAll("Sherpa_","SHERPA_UNKNOWN_");
185 if(tmp_name.Contains("PYTHIA8EVTGEN517")) tmp_name.ReplaceAll("PYTHIA8EVTGEN517","PYTHIA8EVTGEN");
186
187
188 tmp_name.ToUpper();
189
190 unsigned int ishower = 0;
191 if (tagger=="DL1dv01"){
192 for( const auto & gen : gen_mc_generator_keys_dl1d ){
193 if( tmp_name.Contains(gen) ){return ishower+1;}
194 ishower++;
195 }
196 } else if (tagger=="GN2v01"){
197 for( const auto & gen : gen_mc_generator_keys ){
198 if( tmp_name.Contains(gen) ){return ishower+1;}
199 ishower++;
200 }
201 } else {
202 std::cout <<
"ST::getMCShowerType ERROR: Invalid tagger " <<
tagger <<
". Supported values are GN2v01 and DL1dv01." << std::endl;
203 return -1;
204 }
205 if( tmp_name.Contains("PYTHIA8EVTGEN") || tmp_name.Contains("PhPy8EG") ) return 0;
206
207
208 TRegexp is_data("^data1[5-9]_13TeV");
209 TRegexp is_dataRun3("^data2[2-5]_13p6TeV");
210 if (tmp_name.Contains(is_data) || tmp_name.Contains(is_dataRun3)){
211 std::cout << "ST::getMCShowerType WARNING: Asking for the MC shower when running on a data file is not advised. Just returning 0." << std::endl;
212 return 0;
213 }
214
215 std::cout << "ST::getMCShowerType WARNING: Unknown MC generator detected. Returning default 0 = PowhegPythia8 ShowerType for btagging MC/MC maps." << std::endl;
216 return 0;
217 }