13 declareInterface<IPythia8Custom>(
this);
20 ATH_MSG_INFO(
"********************************************************************************" );
21 ATH_MSG_INFO(
"********************************************************************************" );
22 ATH_MSG_INFO(
"*** Will run with repeated time showers of H decay ***" );
23 ATH_MSG_INFO(
"*** N.B. only make sense for gamma gamma decays ***" );
24 ATH_MSG_INFO(
"********************************************************************************" );
25 ATH_MSG_INFO(
"********************************************************************************" );
27 return StatusCode::SUCCESS;
33 ATH_MSG_INFO(
"*************************************************************" );
36 ATH_MSG_INFO(
"*************************************************************" );
39 return StatusCode::SUCCESS;
45 ATH_MSG_WARNING(
"Are you sure that this code has been called correctly?? " );
55 std::vector<int> photons;
59 bool checkEvent =
true;
66 for(
int ii=0; ii !=
event.size(); ++ii){
80 return StatusCode::FAILURE;
83 std::vector<int> daughters =
event[higgsIndex].daughterList();
84 while(daughters.size()==1){
85 daughters=
event[daughters[0]].daughterList();
88 std::vector<int> photons;
90 for(
const auto d: daughters){
96 if(photons.size() < 2){
98 return StatusCode::FAILURE;
101 for(
const auto p: photons){
102 daughters =
event[
p].daughterList();
103 while(daughters.size() == 1){
104 daughters =
event[daughters[0]].daughterList();
107 if(daughters.size() < 2)
continue;
110 for(
const auto d: daughters){
121 pythia.forceTimeShower( photons[0], photons[1], 1000000);
124 if(trials % 1000 == 0 ){
125 ATH_MSG_WARNING(
"Has the decay been setup in Pythia correctly? Possibly stuck in loop so far " << trials <<
" attempts have been made");
128 pythia.forceHadronLevel();
133 return StatusCode::SUCCESS;