Ejemplo n.º 1
0
AliGenerator *
GeneratorCustom()
{ 
      comment = comment.Append(" pp: Pythia 6 (Perugia2011 tune) high mult");

      AliGenPythia* pythia = (AliGenPythia*)GeneratorPythia6(kPythia6Tune_Perugia2011); 

      // multiplicity threshold set to 60 in |eta| < 1.4
      pythia->SetTriggerChargedMultiplicity(60, 1.4);
      
      return pythia;
}
Ejemplo n.º 2
0
AliGenerator* MbPythiaTuneATLAS_Flat()
{
  AliGenPythia* pythia = MbPythiaTuneATLAS();
      
  comment = comment.Append("; flat multiplicity distribution");
      
  // set high multiplicity trigger
  // this weight achieves a flat multiplicity distribution
  Double_t cont[] =
    {0, 
     0.234836, 0.103484, 0.00984802, 0.0199906, 0.0260018, 0.0208481, 0.0101477, 0.00146998, -0.00681513, -0.0114928,
     -0.0113352, -0.0102012, -0.00895238, -0.00534961, -0.00261648, -0.000819048, 0.00130816, 0.00177978, 0.00373838, 0.00566255,
     0.00628156, 0.00687458, 0.00668017, 0.00702917, 0.00810848, 0.00876167, 0.00832783, 0.00848518, 0.0107709, 0.0106849,
     0.00933702, 0.00912525, 0.0106553, 0.0102785, 0.0101756, 0.010962, 0.00957103, 0.00970448, 0.0117133, 0.012271,
     0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113,
     0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113,
     0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113,
     0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113,
     0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113,
     0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0};

  Double_t err[] =
    {0, 
     0.00168216, 0.000743548, 0.00103125, 0.00108605, 0.00117101, 0.00124577, 0.00129119, 0.00128341, 0.00121421, 0.00112431,
     0.00100588, 0.000895078, 0.000790314, 0.000711673, 0.000634547, 0.000589133, 0.000542763, 0.000509552, 0.000487375, 0.000468906, 
     0.000460196, 0.000455806, 0.00044843, 0.000449317, 0.00045007, 0.000458016, 0.000461167, 0.000474742, 0.00050161, 0.00051637, 
     0.000542336, 0.000558854, 0.000599169, 0.000611982, 0.000663855, 0.000696322, 0.000722825, 0.000771686, 0.000838023, 0.000908317, 
     0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003,
     0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003,
     0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003,
     0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003,
     0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003,
     0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0};

  TH1F *weight = new TH1F("newweight","newweight",120,-0.5,119.5);

  weight->SetContent(cont);
  weight->SetError(err);
        
  Int_t limit = weight->GetRandom();
  pythia->SetTriggerChargedMultiplicity(limit, 1.4);
      
  comment = comment.Append(Form("; multiplicity threshold set to %d in |eta| < 1.4", limit));

  return pythia;
}
Ejemplo n.º 3
0
AliGenerator* MbCocktail()
{
      comment = comment.Append(" pp at 14 TeV: Pythia low-pt, no heavy quarks + J/Psi from parameterisation");
      AliGenCocktail * gener = new AliGenCocktail();
      gener->UsePerEventRates();

//    Pythia

      AliGenPythia* pythia = new AliGenPythia(-1);
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(14000.);
      pythia->SwitchHFOff();

//   J/Psi parameterisation

      AliGenParam* jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF scaled", "Jpsi");
      jpsi->SetPtRange(0.,100.);
      jpsi->SetYRange(-8., 8.);
      jpsi->SetPhiRange(0., 360.);
      jpsi->SetForceDecay(kAll);

      gener->AddGenerator(pythia, "Pythia", 1.);
      gener->AddGenerator(jpsi,   "J/Psi", 8.e-4);

      return gener;
}
Ejemplo n.º 4
0
AliGenerator*  CreateGenerator(Tune_t tune, Float_t energy)
{

  

  if (tune == -1) {

    // phojet
    AliGenDPMjet* gener = new AliGenDPMjet(1);
    gener->SetProcess(kDpmMb);
    gener->SetProjectile("P", 1, 1);
    gener->SetTarget("P", 1, 1);

    gener->SetEnergyCMS(energy);
    return gener;
  }

  if (tune != kPyTuneAtlasCSC && tune != kPyTuneCDFA && tune != kPyTuneCMS6D6T && tune != kPyTunePerugia0) {
    
    Printf("Unknown pythia tune, quitting");
    exit(1);

  } else {

    AliGenPythia * gener =  new AliGenPythia(1);
    //
    //  set pythia tune
    gener->SetTune(tune);

    //   structure function  
    if(tune == kPyTuneAtlasCSC) {
      cout << "Setting structure function" << endl;      
      gener->SetStrucFunc(kCTEQ61);
    }
    if(tune == kPyTuneCMS6D6T) {
      cout << "Setting structure function" << endl;      
      gener->SetStrucFunc(kCTEQ6l);
    }
    if(tune == kPyTunePerugia0) {
      cout << "Setting new parton shower" << endl;      
      gener->UseNewMultipleInteractionsScenario();
    }
    //   charm, beauty, charm_unforced, beauty_unforced, jpsi, jpsi_chi, mb
    gener->SetProcess(kPyMb);
    //   Centre of mass energy 
    gener->SetEnergyCMS(energy);

    // Set target/projectile // Is this needded?
    gener->SetProjectile("P", 1, 1);
    gener->SetTarget("P", 1, 1);

    return gener;
  }
}
Ejemplo n.º 5
0
AliGenerator* MbPythia() {
  
  comment = comment.Append(" pp: Pythia low-pt");
  
  //    Pythia
  AliGenPythia* pythia = new AliGenPythia(-1); 
  pythia->SetMomentumRange(0, 999999.);
  //  pythia->SetThetaRange(0., 180.);
  //  pythia->SetChildYRange(-12.,0.);
  //  pythia->SetPtRange(0,1000.);
  //  pythia->SetCutOnChild(1);
  pythia->SetProcess(kPyMb);
  pythia->SetEnergyCMS(energy);
  pythia->SetForceDecay(kSemiMuonic);
  
  return pythia;
}
Ejemplo n.º 6
0
AliGenerator* PyMbTriggered(Int_t pdg)
{
    AliGenPythia* pythia = new AliGenPythia(-1);
    pythia->SetMomentumRange(0, 999999.);
    pythia->SetThetaRange(0., 180.);
    pythia->SetYRange(-12.,12.);
    pythia->SetPtRange(0,1000.);
    pythia->SetProcess(kPyMb);
    pythia->SetEnergyCMS(14000.);
    pythia->SetTriggerParticle(pdg, 0.9);
    return pythia;
}
Ejemplo n.º 7
0
AliGenerator* MbPythiaTunePerugia0()
{
  comment = comment.Append(" pp: Pythia low-pt (Perugia0)");
  //
  //    Pythia
  AliGenPythia* pythia = new AliGenPythia(-1); 
  pythia->SetMomentumRange(0, 999999.);
  pythia->SetThetaRange(0., 180.);
  pythia->SetYRange(-12.,12.);
  pythia->SetPtRange(0,1000.);
  pythia->SetProcess(kPyMb);
  pythia->SetEnergyCMS(energy);
  //    Tune
  //    320     Perugia 0
  pythia->SetTune(320); 
  pythia->UseNewMultipleInteractionsScenario();
  pythia->SetCrossingAngle(0,0.000280);

  //
  return pythia;
}
Ejemplo n.º 8
0
AliGenerator* MbPythiaTunePerugia0bchadr()
{
      comment = comment.Append(" pp: Pythia (Perugia0) bchadr (1 bbbar per event, 1 c-hadron in |y|<1, chadrons decay to hadrons");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1);
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-1.,1.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyBeautyppMNRwmi);
      pythia->SetEnergyCMS(energy);
//    Tune
//    320     Perugia 0
      pythia->SetTune(320);
      pythia->UseNewMultipleInteractionsScenario();
//
//    decays
      pythia->SetForceDecay(kHadronicD);

      return pythia;
}
Ejemplo n.º 9
0
AliGenerator* MbPythiaTuneATLAS()
{
      comment = comment.Append(" pp: Pythia low-pt");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1);
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(energy);
//    Tune
//    C   306 ATLAS-CSC: Arthur Moraes' (new) ATLAS tune (needs CTEQ6L externally)
      pythia->SetTune(306);
      pythia->SetStrucFunc(kCTEQ6l);
//
      return pythia;
}
Ejemplo n.º 10
0
AliGenerator* MbPythiaTuneD6T()
{
      comment = comment.Append(" pp: Pythia low-pt");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1);
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(energy);
//    Tune
//    109     D6T : Rick Field's CDF Tune D6T (NB: needs CTEQ6L pdfs externally)
      pythia->SetTune(109); // F I X
      pythia->SetStrucFunc(kCTEQ6l);
//
      return pythia;
}
Ejemplo n.º 11
0
AliGenerator* MbPythiaTunePerugia0Jpsi()
{
    comment = comment.Append("pp Cocktail: Pythia (Perugia0) + 1 Jpsi forced to dielectrons");
    //Generating a cocktail
    AliGenCocktail *gener = new AliGenCocktail();
    gener->UsePerEventRates();
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1);
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(energy);
//    Tune
//    320     Perugia 0
      pythia->SetTune(320);
      pythia->UseNewMultipleInteractionsScenario();

//
//  JPsi is the second ingredient of the cocktail
      //AliGenParam* jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF scaled", "Jpsi"); // 14 TeV
      AliGenParam* jpsi=0x0;
      if(JpsiHarderPt) jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 8.8", "Jpsi");  // 8.8 TeV
      else jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 7", "Jpsi");  // 7 TeV
      //AliGenParam* jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 7", "Jpsi");  // 7 TeV
      //AliGenParam* jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 8.8", "Jpsi");  // 8.8 TeV

      jpsi->SetPtRange(0.,999.);
      jpsi->SetYRange(-1.0, 1.0);
      jpsi->SetPhiRange(0.,360.);
      //jpsi->SetChildYRange(-0.9,0.9);     // decaying electrons should be in TRD acceptance
      jpsi->SetForceDecay(kDiElectron);
      jpsi->Init();

    gener->AddGenerator(pythia, "Pythia", 1.);  // 1 is weighting factor : Rate per event
    gener->AddGenerator(jpsi,"JPsi",1);
//    gener->Init();

    return gener;
}
Ejemplo n.º 12
0
AliGenerator* JPsi7TeV()
/*{
    AliGenParam *jpsi7TeV = new AliGenParam(1, AliGenMUONlib::kJpsi,"CDF pp 7");
    jpsi7TeV->SetMomentumRange(0,999);
    jpsi7TeV->SetPtRange(0,20.);
    jpsi7TeV->SetYRange(-4.2,-2.3);
    jpsi7TeV->SetPhiRange(0., 360.);
    jpsi7TeV->SetCutOnChild(1);
    jpsi7TeV->SetChildPhiRange(0.,360.);
    jpsi7TeV->SetChildThetaRange(0.,180.);
    jpsi7TeV->SetForceDecay(kDiMuon);
    jpsi7TeV->SetTrackingFlag(1);

    return jpsi7TeV;
}*/
{
      comment = comment.Append(" pp at 7 TeV: Pythia low-pt, no heavy quarks + J/Psi from parameterisation");
      AliGenCocktail * gener = new AliGenCocktail();
      gener->UsePerEventRates();

//    Pythia

      AliGenPythia* pythia = new AliGenPythia(-1);
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(energy);
      pythia->SwitchHFOff();

//   J/Psi parameterisation
//      AliGenParam* jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF scaled", "Jpsi");
      AliGenParam* jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi,"CDF pp 7");
      jpsi->SetPtRange(0.,100.);
      // jpsi->SetYRange(-8., 8.);
      jpsi->SetYRange(-1.5, 1.5); //this to speed up !!!
      jpsi->SetPhiRange(0., 360.);
      jpsi->SetForceDecay(kDiElectron);  // this has to be changed to force J/psi->e+e-

      //gener->AddGenerator(jpsi,   "J/Psi", 8.e-4); // expected yield
      gener->AddGenerator(jpsi,   "J/Psi", 1.);  // 1 J/psi per event
      gener->AddGenerator(pythia, "Pythia", 1.);

      return gener;
}
Ejemplo n.º 13
0
AliGenerator* MbPythia()
{
      comment = comment.Append(" pp: Pythia low-pt");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1);
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-12.,12.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyMb);
      pythia->SetEnergyCMS(energy);

      return pythia;
}
Ejemplo n.º 14
0
AliGenerator* MbPythiaTunePerugia0BtoJpsi2mu() {

  comment = comment.Append(" pp: Pythia (Perugia0) BtoJpsi (1 bbbar per event, 1 b-hadron, 1 J/psi");
  
  //    Pythia
  AliGenPythia* pythia = new AliGenPythia(-1);
  pythia->SetMomentumRange(0, 999999.);
  pythia->SetYRange(-4.5, -2.0);
  pythia->SetPtRange(0,1000.);
  pythia->SetProcess(kPyBeautyppMNRwmi);
  pythia->SetEnergyCMS(energy);
  //    Tune
  //    320     Perugia 0
  pythia->SetTune(320);
  pythia->UseNewMultipleInteractionsScenario();
  //
  //    decays
  pythia->SetCutOnChild(1);
  pythia->SetPdgCodeParticleforAcceptanceCut(443);
  pythia->SetChildYRange(-4.5, -2.0);
  pythia->SetChildPtRange(0,10000.);
  //
  //    decays
  pythia->SetForceDecay(kBJpsiDiMuon);
  
  return pythia;

}
Ejemplo n.º 15
0
AliGenPythia *PythiaHard(PDC07Proc_t proc) {
//*******************************************************************//
// Configuration file for hard QCD processes generation with PYTHIA  //
//                                                                   //
//*******************************************************************//
  AliGenPythia * gener = 0x0;

  switch(proc) {

  case kPyJetJet:
    comment = comment.Append(" pp->jet + jet over at 14 TeV, no restriction");
    AliGenPythia * gener = new AliGenPythia(nEvts);
    gener->SetEnergyCMS(eCMS);//        Centre of mass energy
    gener->SetProcess(kPyJets);//        Process type
    gener->SetJetEtaRange(-1.5, 1.5);//  Final state kinematic cuts
    gener->SetJetPhiRange(0., 360.);
    gener->SetJetEtRange(10., 1000.);
    gener->SetPtHard(ptHardMin, ptHardMax);// Pt transfer of the hard scattering
    gener->SetStrucFunc(kCTEQ4L);

    return gener;

  case kPyGammaJetPHOS:
      comment = comment.Append(" pp->jet + gamma over PHOS");
      gener = new AliGenPythia(nEvts);
      gener->SetEnergyCMS(eCMS);
      gener->SetProcess(kPyDirectGamma);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(ptHardMin,ptHardMax);
      //gener->SetYHard(-1.0,1.0);
      gener->SetGammaEtaRange(-0.13,0.13);
      gener->SetGammaPhiRange(218.,322.);//Over 5 modules +-2 deg
      break;
  case kPyJetJetPHOS:
      comment = comment.Append(" pp->jet + jet over PHOS");
      gener = new AliGenPythia(nEvts);
      gener->SetEnergyCMS(eCMS);
      gener->SetProcess(kPyJets);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(ptHardMin,ptHardMax);
      //gener->SetYHard(-1.0,1.0);
      gener->SetJetEtaRange(-1.,1.);
      gener->SetJetPhiRange(200.,340.);
      gener->SetPi0InPHOS(kTRUE);
      gener->SetFragPhotonOrPi0MinPt(ptGammaPi0Min);

      printf("\n \n Event generator: Minimum pT of particle in calorimeter %f \n \n", ptGammaPi0Min);
      break;
  case kPyGammaBremsPHOS:
      comment = comment.Append(" pp->jet + jet+bremsphoton over PHOS at 14 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetEnergyCMS(eCMS);
      gener->SetProcess(kPyJets);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(ptHardMin,ptHardMax);
      //gener->SetYHard(-1.0,1.0);
      gener->SetJetEtaRange(-1.,1.);
      gener->SetJetPhiRange(200.,340.);
      gener->SetFragPhotonInPHOS(kTRUE);
      gener->SetFragPhotonOrPi0MinPt(ptGammaPi0Min);
	  printf("\n \n Event generator: Minimum pT of particle in calorimeter %f \n \n", ptGammaPi0Min);
	  break;
	case kPyJetJetPHOSv2:
	comment = comment.Append(" pp->jet + jet over PHOS version2 ");
	gener = new AliGenPythia(nEvts);
	gener->SetEnergyCMS(eCMS);
	gener->SetProcess(kPyJets);
	gener->SetStrucFunc(kCTEQ4L);
	gener->SetPtHard(ptHardMin,ptHardMax);
	//gener->SetYHard(-1.0,1.0);
	gener->SetJetEtaRange(-1.,1.);
	gener->SetJetPhiRange(200.,340.);
	//gener->SetPi0InPHOS(kTRUE);
	gener->SetPhotonInPHOSeta(kTRUE);
	gener->SetPhotonMinPt(ptGammaPi0Min);
	gener->SetForceDecay(kAll);
	break;
  case kPyGammaJetEMCAL:
    comment = comment.Append(" pp->jet + gamma over EMCAL at 14 TeV");
    gener = new AliGenPythia(nEvts);
    gener->SetEnergyCMS(eCMS);
    gener->SetProcess(kPyDirectGamma);
    gener->SetStrucFunc(kCTEQ4L);
    gener->SetPtHard(ptHardMin,ptHardMax);
    //gener->SetYHard(-1.0,1.0);
    gener->SetGammaEtaRange(-0.71,0.71);
    gener->SetGammaPhiRange(78.,192.);//Over 6 supermodules +-2 deg
    break;
  case kPyJetJetEMCAL:
    comment = comment.Append(" pp->jet + jet over EMCAL at 14 TeV");
    gener = new AliGenPythia(nEvts);
    gener->SetEnergyCMS(eCMS);
    gener->SetProcess(kPyJets);
    gener->SetStrucFunc(kCTEQ4L);
    gener->SetPtHard(ptHardMin,ptHardMax);
    //gener->SetYHard(-1.0,1.0);
    gener->SetJetEtaRange(-1,1);
    gener->SetJetPhiRange(60.,210.);
    gener->SetPi0InEMCAL(kTRUE);
    gener->SetFragPhotonOrPi0MinPt(ptGammaPi0Min);
    printf("\n \n Event generator: Minimum pT of particle in calorimeter %f \n \n", ptGammaPi0Min);
    break;
  case kPyGammaBremsEMCAL:
      comment = comment.Append(" pp->jet + jet+bremsphoton over EMCAL at 14 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetEnergyCMS(eCMS);
      gener->SetProcess(kPyJets);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(ptHardMin,ptHardMax);
      //gener->SetYHard(-1.0,1.0);
      gener->SetJetEtaRange(-1,1);
      gener->SetJetPhiRange(60.,210.); //Over 2 uncovered PHOS modules
      gener->SetFragPhotonInEMCAL(kTRUE);
      gener->SetFragPhotonOrPi0MinPt(ptGammaPi0Min);

      printf("\n \n Event generator: Minimum pT of particle in calorimeter %f \n \n", ptGammaPi0Min);
      break;

  }

  return gener;
}
Ejemplo n.º 16
0
AliGenPythia *PythiaHVQ(PDC07Proc_t proc) {
//*******************************************************************//
// Configuration file for charm / beauty generation with PYTHIA      //
//                                                                   //
// The parameters have been tuned in order to reproduce the inclusive//
// heavy quark pt distribution given by the NLO pQCD calculation by  //
// Mangano, Nason and Ridolfi.                                       //
//                                                                   //
// For details and for the NORMALIZATION of the yields see:          //
//   N.Carrer and A.Dainese,                                         //
//   "Charm and beauty production at the LHC",                       //
//   ALICE-INT-2003-019, [arXiv:hep-ph/0311225];                     //
//   PPR Chapter 6.6, CERN/LHCC 2005-030 (2005).                     //
//*******************************************************************//
  AliGenPythia * gener = 0x0;

  switch(proc) {
  case kCharmPbPb5500:
      comment = comment.Append(" Charm in Pb-Pb at 5.5 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetProcess(kPyCharmPbPbMNR);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(2.1,-1.0);
      gener->SetEnergyCMS(5500.);
      gener->SetNuclei(208,208);
      break;
  case kCharmpPb8800:
      comment = comment.Append(" Charm in p-Pb at 8.8 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetProcess(kPyCharmpPbMNR);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(2.1,-1.0);
      gener->SetEnergyCMS(8800.);
      gener->SetProjectile("P",1,1);
      gener->SetTarget("Pb",208,82);
      break;
  case kCharmpp14000:
      comment = comment.Append(" Charm in pp at 14 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetProcess(kPyCharmppMNR);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(2.1,-1.0);
      gener->SetEnergyCMS(14000.);
      break;
  case kCharmpp14000wmi:
      comment = comment.Append(" Charm in pp at 14 TeV with mult. interactions");
      gener = new AliGenPythia(-1);
      gener->SetProcess(kPyCharmppMNRwmi);
      gener->SetStrucFunc(kCTEQ5L);
      gener->SetPtHard(ptHardMin,ptHardMax);
      gener->SetEnergyCMS(14000.);
      break;
  case kD0PbPb5500:
      comment = comment.Append(" D0 in Pb-Pb at 5.5 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetProcess(kPyD0PbPbMNR);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(2.1,-1.0);
      gener->SetEnergyCMS(5500.);
      gener->SetNuclei(208,208);
      break;
  case kD0pPb8800:
      comment = comment.Append(" D0 in p-Pb at 8.8 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetProcess(kPyD0pPbMNR);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(2.1,-1.0);
      gener->SetEnergyCMS(8800.);
      gener->SetProjectile("P",1,1);
      gener->SetTarget("Pb",208,82);
      break;
  case kD0pp14000:
      comment = comment.Append(" D0 in pp at 14 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetProcess(kPyD0ppMNR);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(2.1,-1.0);
      gener->SetEnergyCMS(14000.);
      break;
  case kDPlusPbPb5500:
      comment = comment.Append(" DPlus in Pb-Pb at 5.5 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetProcess(kPyDPlusPbPbMNR);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(2.1,-1.0);
      gener->SetEnergyCMS(5500.);
      gener->SetNuclei(208,208);
      break;
  case kDPluspPb8800:
      comment = comment.Append(" DPlus in p-Pb at 8.8 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetProcess(kPyDPluspPbMNR);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(2.1,-1.0);
      gener->SetEnergyCMS(8800.);
      gener->SetProjectile("P",1,1);
      gener->SetTarget("Pb",208,82);
      break;
  case kDPluspp14000:
      comment = comment.Append(" DPlus in pp at 14 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetProcess(kPyDPlusppMNR);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(2.1,-1.0);
      gener->SetEnergyCMS(14000.);
      break;
  case kBeautyPbPb5500:
      comment = comment.Append(" Beauty in Pb-Pb at 5.5 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetProcess(kPyBeautyPbPbMNR);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(2.75,-1.0);
      gener->SetEnergyCMS(5500.);
      gener->SetNuclei(208,208);
      break;
  case kBeautypPb8800:
      comment = comment.Append(" Beauty in p-Pb at 8.8 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetProcess(kPyBeautypPbMNR);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(2.75,-1.0);
      gener->SetEnergyCMS(8800.);
      gener->SetProjectile("P",1,1);
      gener->SetTarget("Pb",208,82);
      break;
  case kBeautypp14000:
      comment = comment.Append(" Beauty in pp at 14 TeV");
      gener = new AliGenPythia(nEvts);
      gener->SetProcess(kPyBeautyppMNR);
      gener->SetStrucFunc(kCTEQ4L);
      gener->SetPtHard(2.75,-1.0);
      gener->SetEnergyCMS(14000.);
      break;
  case kBeautypp14000wmi:
      comment = comment.Append(" Beauty in pp at 14 TeV with mult. interactions");
      gener = new AliGenPythia(-1);
      gener->SetProcess(kPyBeautyppMNRwmi);
      gener->SetStrucFunc(kCTEQ5L);
      gener->SetPtHard(ptHardMin,ptHardMax);
      gener->SetEnergyCMS(14000.);
      break;
  }

  return gener;
}
Ejemplo n.º 17
0
void Config()
{
	// Get settings from environment variables
  ProcessEnvironmentVars();

  // Random Number seed
  if (gSystem->Getenv("CONFIG_SEED")) {
    seed = atoi(gSystem->Getenv("CONFIG_SEED"));
  }
  else if(gSystem->Getenv("DC_EVENT") && gSystem->Getenv("DC_RUN")){
    seed = runNumber * 100000 + eventNumber;
  }
  gRandom->SetSeed(seed);
  cout<<"Seed for random number generation= "<<gRandom->GetSeed()<<endl; 

  // libraries required by geant321
#if defined(__CINT__)
	gSystem->Load("liblhapdf");      // Parton density functions
	gSystem->Load("libEGPythia6");   // TGenerator interface
	gSystem->Load("libpythia6");     // Pythia
	gSystem->Load("libAliPythia6");  // ALICE specific implementations
	gSystem->Load("libgeant321");
#endif
  new TGeant3TGeo("C++ Interface to Geant3");

  // Output every 100 tracks
  ((TGeant3*)gMC)->SetSWIT(4,100);

  //=======================================================================
  // Run loader
  AliRunLoader* rl=0x0;

  AliLog::Message(AliLog::kInfo, "Creating Run Loader", "", "", "Config()"," ConfigPPR.C", __LINE__);

  rl = AliRunLoader::Open("galice.root",
			  AliConfig::GetDefaultEventFolderName(),
			  "recreate");
  if (rl == 0x0)
    {
      gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
      return;
    }
  rl->SetCompressionLevel(2);
  rl->SetNumberOfEventsPerFile(100);
  gAlice->SetRunLoader(rl);

  // Set the trigger configuration
  AliSimulation::Instance()->SetTriggerConfig(TrigConfName[trig]);
  cout<<"Trigger configuration is set to  "<<TrigConfName[trig]<<endl;

  //======================//
  // Set External decayer //
  //======================//
  TVirtualMCDecayer* decayer = new AliDecayerPythia();
  // DECAYS
  //
  switch(decHvFl) {
    case kNature:
      decayer->SetForceDecay(kAll);
      break;
    case kHadr:
      decayer->SetForceDecay(kHadronicD);
      break;
    case kSemiEl:
      decayer->SetForceDecay(kSemiElectronic);
      break;
    case kSemiMu:
      decayer->SetForceDecay(kSemiMuonic);
      break;
  }
  decayer->Init();
  gMC->SetExternalDecayer(decayer);
  if(proc == kPyJetJetPHOSv2) // in this case we decay the pi0
    decayer->SetForceDecay(kNeutralPion);

  //
  //=======================================================================
  // ************* STEERING parameters FOR ALICE SIMULATION **************
  // --- Specify event type to be tracked through the ALICE setup
  // --- All positions are in cm, angles in degrees, and P and E in GeV


    gMC->SetProcess("DCAY",1);
    gMC->SetProcess("PAIR",1);
    gMC->SetProcess("COMP",1);
    gMC->SetProcess("PHOT",1);
    gMC->SetProcess("PFIS",0);
    gMC->SetProcess("DRAY",0);
    gMC->SetProcess("ANNI",1);
    gMC->SetProcess("BREM",1);
    gMC->SetProcess("MUNU",1);
    gMC->SetProcess("CKOV",1);
    gMC->SetProcess("HADR",1);
    gMC->SetProcess("LOSS",2);
    gMC->SetProcess("MULS",1);
    gMC->SetProcess("RAYL",1);

    Float_t cut = 1.e-3;        // 1MeV cut by default
    Float_t tofmax = 1.e10;

    gMC->SetCut("CUTGAM", cut);
    gMC->SetCut("CUTELE", cut);
    gMC->SetCut("CUTNEU", cut);
    gMC->SetCut("CUTHAD", cut);
    gMC->SetCut("CUTMUO", cut);
    gMC->SetCut("BCUTE",  cut);
    gMC->SetCut("BCUTM",  cut);
    gMC->SetCut("DCUTE",  cut);
    gMC->SetCut("DCUTM",  cut);
    gMC->SetCut("PPCUTM", cut);
    gMC->SetCut("TOFMAX", tofmax);


  //=========================//
  // Generator Configuration //
  //=========================//
  AliGenPythia* gener = 0x0;

  if (proc <=   kBeautypp14000wmi) {
    AliGenPythia *pythia = PythiaHVQ(proc);
    // FeedDown option
    pythia->SetFeedDownHigherFamily(kFALSE);
    // Stack filling option
    if(!stars) pythia->SetStackFillOpt(AliGenPythia::kParentSelection);
    // Set Count mode
    if(nEvts>0) pythia->SetCountMode(AliGenPythia::kCountParents);
    //
    // DECAYS
    //
    switch(decHvFl) {
    case kNature:
      pythia->SetForceDecay(kAll);
      break;
    case kHadr:
      pythia->SetForceDecay(kHadronicD);
      break;
    case kSemiEl:
      pythia->SetForceDecay(kSemiElectronic);
      break;
    case kSemiMu:
      pythia->SetForceDecay(kSemiMuonic);
      break;
    }
    //
    // GEOM & KINE CUTS
    //
    pythia->SetMomentumRange(0,99999999);
    pythia->SetPhiRange(0., 360.);
    pythia->SetThetaRange(0,180);
    switch(ycut) {
    case kFull:
      pythia->SetYRange(-999,999);
      break;
    case kBarrel:
      pythia->SetYRange(-2,2);
      break;
    case kMuonArm:
      pythia->SetYRange(1,6);
      break;
    }
    gener = pythia;
  } else if (proc == kPyMbNoHvq) {
    gener = MbCocktail();
  } else if (proc == kPyOmegaMinus) {
    gener = PyMbTriggered(3334);
  } else if (proc == kPyOmegaPlus) {
    gener = PyMbTriggered(-3334);
  } else if (proc <= kPyGammaBremsEMCAL) {
    AliGenPythia *pythia = PythiaHard(proc);
    // FeedDown option
    pythia->SetFeedDownHigherFamily(kFALSE);
    // Set Count mode
    if(nEvts>0) pythia->SetCountMode(AliGenPythia::kCountParents);

      //
      // GEOM & KINE CUTS
      //
    pythia->SetMomentumRange(0,99999999);
    //       pythia->SetJetEtaRange(-1.5, 1.5);//  Final state kinematic cuts
    //       pythia->SetJetPhiRange(0., 360.);
    //       pythia->SetThetaRange(45,135);

   if(proc == kPyJetJetPHOSv2)
		 pythia->SetForceDecay(kNeutralPion);
	 else
		 pythia->SetForceDecay(kAll);
		
		pythia->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
    pythia->SetPtKick(5); // set the intrinsic kt to 5 GeV/c
    gener = pythia;
	}


  // PRIMARY VERTEX

  gener->SetOrigin(0., 0., 0.);    // vertex position

  // Size of the interaction diamond
  // Longitudinal
  Float_t sigmaz  = 7.55 / TMath::Sqrt(2.); // [cm]

  // Transverse
  Float_t betast  = 10;                 // beta* [m]
  Float_t eps     = 3.75e-6;            // emittance [m]
  Float_t gamma   = 7000. / 0.938272;   // relativistic gamma [1]
  Float_t sigmaxy = TMath::Sqrt(eps * betast / gamma) / TMath::Sqrt(2.) * 100.;  // [cm]
  printf("\n \n Diamond size x-y: %10.3e z: %10.3e\n \n", sigmaxy, sigmaz);

  gener->SetSigma(sigmaxy, sigmaxy, sigmaz);      // Sigma in (X,Y,Z) (cm) on IP position
  gener->SetCutVertexZ(3.);        // Truncate at 3 sigma
  gener->SetVertexSmear(kPerEvent);

  gener->Init();

  //Quenching
  gener->SetQuench(iquenching);
  if(iquenching == 1){
    Float_t k = 6e5*(qhat/1.7) ; //qhat=1.7, k = 6e5, default  value
    AliPythia::Instance()->InitQuenching(0.,0.1,k,0,0.95,6);

 }
  // FIELD

  if (mag == AliMagF::k2kG) {
    comment = comment.Append(" | L3 field 0.2 T");
  } else if (mag == AliMagF::k5kG) {
    comment = comment.Append(" | L3 field 0.5 T");
  }
  printf("\n \n Comment: %s \n \n", comment.Data());
  // to use constant field in the barrel use:
  //  AliMagF* field = new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kGUniform);
  AliMagF* field = new AliMagF("Maps","Maps", -1., -1., mag);
  TGeoGlobalMagField::Instance()->SetField(field);
  rl->CdGAFile();

  Int_t iABSO  = 1;
  Int_t iACORDE= 1;
  Int_t iDIPO  = 1;
  Int_t iEMCAL = 1;
  Int_t iFMD   = 1;
  Int_t iFRAME = 1;
  Int_t iHALL  = 1;
  Int_t iITS   = 1;
  Int_t iMAG   = 1;
  Int_t iMUON  = 1;
  Int_t iPHOS  = 1;
  Int_t iPIPE  = 1;
  Int_t iPMD   = 1;
  Int_t iHMPID = 1;
  Int_t iSHIL  = 1;
  Int_t iT0    = 1;
  Int_t iTOF   = 1;
  Int_t iTPC   = 1;
  Int_t iTRD   = 1;
  Int_t iVZERO = 1;
  Int_t iZDC   = 1;


    //=================== Alice BODY parameters =============================
    AliBODY *BODY = new AliBODY("BODY", "Alice envelop");


    if (iMAG)
    {
        //=================== MAG parameters ============================
        // --- Start with Magnet since detector layouts may be depending ---
        // --- on the selected Magnet dimensions ---
        AliMAG *MAG = new AliMAG("MAG", "Magnet");
    }
//
//
    if (iABSO)
    {
        //=================== ABSO parameters ============================
        AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber");
    }

    if (iDIPO)
    {
        //=================== DIPO parameters ============================

        AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3");
    }

    if (iHALL)
    {
        //=================== HALL parameters ============================

        AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall");
    }


    if (iFRAME)
    {
        //=================== FRAME parameters ============================

        AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
	if (geo == kHoles) FRAME->SetHoles(1);
	else FRAME->SetHoles(0);

    }

    if (iSHIL)
    {
        //=================== SHIL parameters ============================

        AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3");
    }


    if (iPIPE)
    {
        //=================== PIPE parameters ============================

        AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe");
    }

    if(iITS) {

    //=================== ITS parameters ============================
    //

      AliITS *ITS  = new AliITSv11("ITS","ITS v11");
    }


    if (iTPC)
    {
      //============================ TPC parameters =====================
        AliTPC *TPC = new AliTPCv2("TPC", "Default");
    }


    if (iTOF) {
        //=================== TOF parameters ============================
	AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF");
   }


    if (iHMPID)
    {
        //=================== HMPID parameters ===========================
        AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID");

    }


    if (iZDC)
    {
        //=================== ZDC parameters ============================

        AliZDC *ZDC = new AliZDCv4("ZDC", "normal ZDC");
    }

   if (iTRD)
    {
        //=================== TRD parameters ============================
 
        AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
	AliTRDgeometry *geoTRD = TRD->GetGeometry();
    }

    if (iFMD)
    {
        //=================== FMD parameters ============================
	AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
   }

    if (iMUON)
    {
        //=================== MUON parameters ===========================
        // New MUONv1 version (geometry defined via builders)
        AliMUON *MUON = new AliMUONv1("MUON", "default");
    }
    //=================== PHOS parameters ===========================

    if (iPHOS)
    {
        AliPHOS *PHOS = new AliPHOSv1("PHOS", "Run1");
    }


    if (iPMD)
    {
        //=================== PMD parameters ============================
        AliPMD *PMD = new AliPMDv1("PMD", "normal PMD");
    }

    if (iT0)
    {
        //=================== T0 parameters ============================
        AliT0 *T0 = new AliT0v1("T0", "T0 Detector");
    }

    if (iEMCAL)
    {
        //=================== EMCAL parameters ============================
        AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETEV1 scTh=0.176 pbTh=0.144");
    }

     if (iACORDE)
    {
        //=================== CRT parameters ============================
        AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");
    }

     if (iVZERO)
    {
        //=================== CRT parameters ============================
        AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
    }
}
Ejemplo n.º 18
0
AliGenerator* MbPythiaTuneATLAS_Flat()
{
      AliGenPythia* pythia = MbPythiaTuneATLAS();

      comment = comment.Append("; flat multiplicity distribution");

      // set high multiplicity trigger
      // this weight achieves a flat multiplicity distribution
      TH1 *weight = new TH1D("weight","weight",201,-0.5,200.5);
      weight->SetBinContent(1,5.49443);
      weight->SetBinContent(2,8.770816);
      weight->SetBinContent(6,0.4568624);
      weight->SetBinContent(7,0.2919915);
      weight->SetBinContent(8,0.6674189);
      weight->SetBinContent(9,0.364737);
      weight->SetBinContent(10,0.8818444);
      weight->SetBinContent(11,0.531885);
      weight->SetBinContent(12,1.035197);
      weight->SetBinContent(13,0.9394057);
      weight->SetBinContent(14,0.9643193);
      weight->SetBinContent(15,0.94543);
      weight->SetBinContent(16,0.9426507);
      weight->SetBinContent(17,0.9423649);
      weight->SetBinContent(18,0.789456);
      weight->SetBinContent(19,1.149026);
      weight->SetBinContent(20,1.100491);
      weight->SetBinContent(21,0.6350525);
      weight->SetBinContent(22,1.351941);
      weight->SetBinContent(23,0.03233504);
      weight->SetBinContent(24,0.9574557);
      weight->SetBinContent(25,0.868133);
      weight->SetBinContent(26,1.030998);
      weight->SetBinContent(27,1.08897);
      weight->SetBinContent(28,1.251382);
      weight->SetBinContent(29,0.1391099);
      weight->SetBinContent(30,1.192876);
      weight->SetBinContent(31,0.448944);
      weight->SetBinContent(32,1);
      weight->SetBinContent(33,1);
      weight->SetBinContent(34,1);
      weight->SetBinContent(35,1);
      weight->SetBinContent(36,0.9999997);
      weight->SetBinContent(37,0.9999997);
      weight->SetBinContent(38,0.9999996);
      weight->SetBinContent(39,0.9999996);
      weight->SetBinContent(40,0.9999995);
      weight->SetBinContent(41,0.9999993);
      weight->SetBinContent(42,1);
      weight->SetBinContent(43,1);
      weight->SetBinContent(44,1);
      weight->SetBinContent(45,1);
      weight->SetBinContent(46,1);
      weight->SetBinContent(47,0.9999999);
      weight->SetBinContent(48,0.9999998);
      weight->SetBinContent(49,0.9999998);
      weight->SetBinContent(50,0.9999999);
      weight->SetBinContent(51,0.9999999);
      weight->SetBinContent(52,0.9999999);
      weight->SetBinContent(53,0.9999999);
      weight->SetBinContent(54,0.9999998);
      weight->SetBinContent(55,0.9999998);
      weight->SetBinContent(56,0.9999998);
      weight->SetBinContent(57,0.9999997);
      weight->SetBinContent(58,0.9999996);
      weight->SetBinContent(59,0.9999995);
      weight->SetBinContent(60,1);
      weight->SetBinContent(61,1);
      weight->SetBinContent(62,1);
      weight->SetBinContent(63,1);
      weight->SetBinContent(64,1);
      weight->SetBinContent(65,0.9999999);
      weight->SetBinContent(66,0.9999998);
      weight->SetBinContent(67,0.9999998);
      weight->SetBinContent(68,0.9999999);
      weight->SetBinContent(69,1);
      weight->SetBinContent(70,1);
      weight->SetBinContent(71,0.9999997);
      weight->SetBinContent(72,0.9999995);
      weight->SetBinContent(73,0.9999994);
      weight->SetBinContent(74,1);
      weight->SetBinContent(75,1);
      weight->SetBinContent(76,1);
      weight->SetBinContent(77,1);
      weight->SetBinContent(78,0.9999999);
      weight->SetBinContent(79,1);
      weight->SetBinContent(80,1);
      weight->SetEntries(526);

      Int_t limit = weight->GetRandom();
      pythia->SetTriggerChargedMultiplicity(limit, 1.4);

      comment = comment.Append(Form("; multiplicity threshold set to %d in |eta| < 1.4", limit));

      return pythia;
}
Ejemplo n.º 19
0
AliGenerator* MbPythiaTunePerugia0bele()
{
      comment = comment.Append(" pp: Pythia (Perugia0) bele (1 bbbar per event, 1 b-hadron in |y|<1, 1 electron in |y|<2");
//
//    Pythia
      AliGenPythia* pythia = new AliGenPythia(-1);
      pythia->SetMomentumRange(0, 999999.);
      pythia->SetThetaRange(0., 180.);
      pythia->SetYRange(-2.,2.);
      pythia->SetPtRange(0,1000.);
      pythia->SetProcess(kPyBeautyppMNRwmi);
      pythia->SetEnergyCMS(energy);
//    Tune
//    320     Perugia 0
      pythia->SetTune(320);
      pythia->UseNewMultipleInteractionsScenario();
//
//    decays
      pythia->SetCutOnChild(1);
      pythia->SetPdgCodeParticleforAcceptanceCut(11);
      pythia->SetChildYRange(-2,2);
      pythia->SetChildPtRange(0,10000.);

      return pythia;
}