Fork me on GitHub

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • readers/DelphesPythia8.cpp

    r78d1846 r6934875  
    146146}
    147147
    148 //---------------------------------------------------------------------------
    149 
    150 /*
    151 Single-particle gun. The particle must be a colour singlet.
    152 Input: flavour, energy, direction (theta, phi).
    153 If theta < 0 then random choice over solid angle.
    154 Optional final argument to put particle at rest => E = m.
    155 from pythia8 example 21
    156 */
    157 
    158 void fillParticle(int id, double pMax, double etaMax,
     148
     149// Single-particle gun. The particle must be a colour singlet.
     150// Input: flavour, energy, direction (theta, phi).
     151// If theta < 0 then random choice over solid angle.
     152// Optional final argument to put particle at rest => E = m.
     153// from pythia8 example 21
     154
     155void fillParticle(int id, double p_max, double eta_max,
    159156  Pythia8::Event &event, Pythia8::ParticleData &pdt, Pythia8::Rndm &rndm)
    160157{
     
    164161  // Generate uniform pt and eta.
    165162  double pt, eta, phi, pp, ee, mm;
    166 
    167   // pMin = 0.1 GeV for single particles
    168   pp = pow(10, - 1.0 + (log10(pMax) + 1.0) * rndm.flat());
    169   eta = (2.0 * rndm.flat() - 1.0) * etaMax;
     163 
     164  //pmin = 0.1 GeV for single particles
     165  pp = pow(10, - 1.0 + (log10(p_max) + 1.0) * rndm.flat());
     166  eta = (2.0 * rndm.flat() - 1.0) * eta_max;
    170167  phi = 2.0 * M_PI * rndm.flat();
    171168  mm = pdt.mSel(id);
     
    177174}
    178175
    179 //---------------------------------------------------------------------------
    180 
    181 void fillPartons(int id, double pMax, double etaMax,
     176void fillPartons(int id, double p_max, double eta_max,
    182177  Pythia8::Event &event, Pythia8::ParticleData &pdt, Pythia8::Rndm &rndm)
    183178{
     179
    184180  // Reset event record to allow for new event.
    185181  event.reset();
     
    188184  double pt, eta, phi, pp, ee, mm;
    189185
    190   // pMin = 1 GeV for jets
    191   pp = pow(10, log10(pMax) * rndm.flat());
    192   eta = (2.0 * rndm.flat() - 1.0) * etaMax;
     186  //pmin = 1 GeV for jets
     187  pp = pow(10, log10(p_max) * rndm.flat()); 
     188  eta = (2.0 * rndm.flat() - 1.0) * eta_max;
    193189  phi = 2.0 * M_PI * rndm.flat();
    194190  mm = pdt.mSel(id);
     
    197193
    198194  if( (id == 4 || id == 5) && pt < 10.0) return;
    199 
     195 
    200196  if(id == 21)
    201197  {
     
    209205  }
    210206}
     207
    211208
    212209//---------------------------------------------------------------------------
     
    230227  Long64_t eventCounter, errorCounter;
    231228  Long64_t numberOfEvents, timesAllowErrors;
    232   Bool_t spareFlag1;
    233   Int_t spareMode1;
    234   Double_t spareParm1, spareParm2;
    235229
    236230  Pythia8::Pythia *pythia = 0;
    237 
     231 
    238232  // for matching
    239233  Pythia8::CombineMatchingInput *combined = 0;
     
    285279    // Initialize Pythia
    286280    pythia = new Pythia8::Pythia;
    287 
     281 
    288282    // jet matching
    289283    matching = combined->getHook(*pythia);
    290     if(!matching)
     284    if (!matching)
    291285    {
    292286      throw runtime_error("can't do matching");
    293287    }
    294288    pythia->setUserHooksPtr(matching);
    295 
     289 
    296290
    297291    if(pythia == NULL)
     
    311305    timesAllowErrors = pythia->mode("Main:timesAllowErrors");
    312306
    313     spareFlag1 = pythia->flag("Main:spareFlag1");
    314     spareMode1 = pythia->mode("Main:spareMode1");
    315     spareParm1 = pythia->parm("Main:spareParm1");
    316     spareParm2 = pythia->parm("Main:spareParm2");
    317 
    318307    // Check if particle gun
    319     if(!spareFlag1)
     308    if (!pythia->flag("Main:spareFlag1"))
    320309    {
    321310      inputFile = fopen(pythia->word("Beams:LHEF").c_str(), "r");
     
    351340        stableParticleOutputArrayLHEF, partonOutputArrayLHEF) && !reader->EventReady());
    352341
    353       if(spareFlag1)
     342      if (pythia->flag("Main:spareFlag1"))
    354343      {
    355         if((spareMode1 >= 1 && spareMode1 <= 5) || spareMode1 == 21)
    356         {
    357           fillPartons(spareMode1, spareParm1, spareParm2, pythia->event, pythia->particleData, pythia->rndm);
     344        if (pythia->mode("Main:spareMode1") == 11 || pythia->mode("Main:spareMode1") == 13 || pythia->mode("Main:spareMode1") == 15 || pythia->mode("Main:spareMode1") == 22 || pythia->mode("Main:spareMode1") == 211 || pythia->mode("Main:spareMode1") == 2112)
     345        { 
     346          fillParticle(pythia->mode("Main:spareMode1"), pythia->parm("Main:spareParm1"), pythia->parm("Main:spareParm2"), pythia->event, pythia->particleData, pythia->rndm);
    358347        }
    359348        else
    360349        {
    361           fillParticle(spareMode1, spareParm1, spareParm2, pythia->event, pythia->particleData, pythia->rndm);
     350          fillPartons(pythia->mode("Main:spareMode1"), pythia->parm("Main:spareParm1"), pythia->parm("Main:spareParm2"), pythia->event, pythia->particleData, pythia->rndm);
    362351        }
    363352      }
Note: See TracChangeset for help on using the changeset viewer.