예제 #1
0
파일: Config.C 프로젝트: alisw/AliRoot
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;
}
예제 #2
0
AliGenerator* GeneratorCustom()
{
  AliGenCocktail *ctl = GeneratorCocktail("Monash2013_RsnNcl002");
  // pythia8
  AliGenerator   *py8 = GeneratorPythia8(kPythia8Tune_Monash2013);
  ctl->AddGenerator(py8, "Pythia8 (Monash2013)", 1.);

  // randomly injected particles
  const int nParticles = 10;
  particle_inj particleList[10] = { // {name,pdgcode,maxpt,maxy},
    {1,"f2(1270)",225,15.,0.6},
    {1,"Lambda(1520)",3124,15.,0.6},
    {1,"Lambda_bar(1520)",-3124,15.,0.6},
    {1,"f0(980)",9010221,15.,0.6},
    {1,"Xi*0(1530)",3324,15.,0.6},
    {1,"Xi*0_bar(1530)",-3324,15.,0.6},
    {1,"Xi0(1820)",123324,15.,0.6},
    {1,"Xi0_bar(1820)",-123324,15.,0.6},
    {1,"Xi-(1820)",123314,15.,0.6},
    {1,"Xi+(1820)",-123314,15.,0.6}
  };

  AliDecayerPythia *dec = new AliDecayerPythia;
  AliPDG::AddParticlesToPdgDataBase();

  ctl->UseSingleInjectionPerEvent();
  for (int idx = 0; idx < nParticles; ++idx) {
    AliGenerator   *inj = GeneratorParam(particleList[idx].n, particleList[idx].pdg, 0., particleList[idx].maxpt,-particleList[idx].maxy, particleList[idx].maxy,dec);
    ctl->AddGenerator(inj, (TString(particleList[idx].name) + " injector").Data(), 1.);
  }
  return ctl;
}
예제 #3
0
/// \ingroup MC/CustomGenerators/DPG
/// \brief   Performance generator (ATO-245)
AliGenerator * GeneratorCustom() {
  AliGenCocktail *ctl    = GeneratorCocktail("Hijing+Generator for performance (tracking,PID) studies");
  AliGenerator   *hij    = GeneratorHijing();
  AliGenerator   *genJet = PerformanceGenerator();
  ctl->AddGenerator(hij,    "Hijing", 1.);
  ctl->AddGenerator(genJet,"Generator for performance (tracking,PID) studies",1);
  return ctl;
}
///
/// Main configuration method 
///
AliGenerator * 
GeneratorCustom
(TString opt = "kFullDetector")
{
  // Init cocktail
  AliGenCocktail *ctl   = GeneratorCocktail(Form("Dpmjet_%s",processConfig.Data()));
  
  //
  // DPMjet
  //
  AliGenerator   *dpm   = GeneratorPhojet();
  ctl->AddGenerator(dpm,  "Dpmjet", 1.);

  //
  // PYTHIA
  //
  // acceptance
  Int_t acceptance = kCalorimeterAcceptance_FullDetector;
  if (opt.EqualTo("FullDetector"))
    acceptance = kCalorimeterAcceptance_FullDetector;
  if (opt.EqualTo("EMCRun1"))
    acceptance = kCalorimeterAcceptance_EMCRun1;
  if (opt.EqualTo("PHSRun1"))
    acceptance = kCalorimeterAcceptance_PHSRun1;
  if (opt.EqualTo("EMCRun2"))
    acceptance = kCalorimeterAcceptance_EMCRun2;
  if (opt.EqualTo("PHSRun2"))
    acceptance = kCalorimeterAcceptance_PHSRun2;
  if (opt.EqualTo("PHSDMC"))
    acceptance = kCalorimeterAcceptance_PHSDMC;
    
  // process
  AliGenerator   *gammajet   = 0;

  // PYTHIA6
  if (processConfig.EqualTo("Pythia6Jets"))
    gammajet = GeneratorPythia6Jets         (kPythia6Tune_Perugia2011, acceptance); 
  if (processConfig.EqualTo("Pythia6GammaJet"))
    gammajet = GeneratorPythia6GammaJet     (kPythia6Tune_Perugia2011, acceptance); 
  if (processConfig.EqualTo("Pythia6JetsGammaTrg"))
    gammajet = GeneratorPythia6JetsGammaTrg (kPythia6Tune_Perugia2011, acceptance); 
  
  // PYTHIA8
  if (processConfig.EqualTo("Pythia8Jets"))
    gammajet = GeneratorPythia8Jets         (kPythia8Tune_Monash2013 , acceptance); 
  if (processConfig.EqualTo("Pythia8GammaJet"))
    gammajet =  GeneratorPythia8GammaJet     (kPythia8Tune_Monash2013 , acceptance); 
  if (processConfig.EqualTo("Pythia8JetsGammaTrg"))
    gammajet = GeneratorPythia8JetsGammaTrg (kPythia8Tune_Monash2013 , acceptance); 
  
  ctl->AddGenerator(gammajet, processConfig, 1.);  
  
  return ctl;
}
예제 #5
0
AliGenerator *
GeneratorCustom() 
{
  AliGenCocktail *ctl   = GeneratorCocktail("Perugia2011_Nuclex002");
  AliGenerator   *pyt   = GeneratorPythia6(kPythia6Tune_Perugia2011);
  ctl->AddGenerator(pyt,  "Pythia6", 1.);
  AliGenerator   *nu1a  = Generator_Nuclex(0x1F, kFALSE, 10);
  AliGenerator   *nu1b  = Generator_Nuclex(0x1F, kTRUE, 10);
  ctl->AddGenerator(nu1a,  "Nuclex1a", 1.);
  ctl->AddGenerator(nu1b,  "Nuclex1b", 1.);
  return ctl;
}
예제 #6
0
AliGenerator *
GeneratorCustom()
{
  AliGenCocktail* cocktail = GeneratorCocktail("Hijing_Starlight");
  AliGenerator* starlight = GeneratorStarlight();
  cocktail->AddGenerator(starlight, "Starlight", 1.);
  
  AliGenerator* hijing = GeneratorHijing();
  cocktail->AddGenerator(hijing, "Hijing", 1.);    
  
  return cocktail;
}
예제 #7
0
// Requires AliRoot from v5-09-02
AliGenerator *
GeneratorCustom()
{
  AliGenCocktail *ctl   = GeneratorCocktail("Hijing_Nuclex005");
  AliGenerator   *hij   = GeneratorHijing();
  ctl->AddGenerator(hij,  "Hijing", 1.);
  AliGenerator   *nu1a  = Generator_Nuclex(0x70000, kFALSE, 10);
  AliGenerator   *nu1b  = Generator_Nuclex(0x70000, kTRUE, 10);
  ctl->AddGenerator(nu1a,  "Nuclex1a", 1.);
  ctl->AddGenerator(nu1b,  "Nuclex1b", 1.);
  return ctl;
}
예제 #8
0
파일: Hijing_Xe_HF.C 프로젝트: alisw/AliDPG
AliGenerator *
GeneratorCustom(TString opt = "")
{
    AliGenCocktail *ctl  = GeneratorCocktail("Hijing_HF");
  
        AliGenerator   *hij  = GeneratorHijing();
        ctl->AddGenerator(hij, "Hijing", 1.);
    //
    const Char_t *label[2][3] = {
        "chadr PYTHIA", "chadr PYTHIA", "cele PYTHIA",
        "bchadr PYTHIA", "bchadr PYTHIA", "bele PYTHIA"
    };
    //
    Int_t process[2] = {kPythia6HeavyProcess_Charm, kPythia6HeavyProcess_Beauty};
    Int_t iprocess = uidConfig % 2;
    //
    Int_t decay[3]   = {kPythia6HeavyDecay_Hadrons, kPythia6HeavyDecay_HadronsWithV0, kPythia6HeavyDecay_Electron};
    TString optList[3] = {"had", "hv0", "ele"};
    Int_t idecay = 0;
    for (Int_t iopt = 0; iopt < 3; iopt++)
        if (opt.EqualTo(optList[iopt]))
            idecay = iopt;
    //
    AliGenerator *phf  = GeneratorPythia6Heavy(process[iprocess], decay[idecay], kPythia6Tune_Perugia2011);
    //
    TFormula *formula = new TFormula("Signals","max(1.,80.*(1.-x/20.)*(x<9)+240.*(1.-x/13.)*(x>9.))");
    //
    Float_t pth[4] = {2.76, 20., 50., 1000.};
    Int_t ipt;
    if      ((uidConfig / 2) % 10 < 7) ipt = 0;
    else if ((uidConfig / 2) % 10 < 9) ipt = 1;
    else                               ipt = 2;
    ((AliGenPythia *)phf)->SetPtHard(pth[ipt], pth[ipt + 1]);
    //
    ctl->AddGenerator(phf, label[iprocess][idecay], 1., formula);
    printf(">>>>> added HF generator %s \n", label[iprocess][idecay]);
    // add pi0 and eta enhancement
    if (decay[idecay] == kPythia6HeavyDecay_Electron) {
        TFormula* neutralsF = new TFormula("neutrals", "20.+ 80. * exp(- 0.5 * x * x / 5.12 / 5.12)");
        AliGenPHOSlib *plib = new AliGenPHOSlib();
        AliGenParam *pi0 = new AliGenParam(1, plib, AliGenPHOSlib::kPi0Flat);
        pi0->SetPhiRange(0., 360.) ;
        pi0->SetYRange(-1.2, 1.2) ;
        pi0->SetPtRange(0., 50.) ;
        ctl->AddGenerator(pi0,  "pi0", 1., neutralsF);
        AliGenParam *eta = new AliGenParam(1, plib, AliGenPHOSlib::kEtaFlat);
        eta->SetPhiRange(0., 360.) ;
        eta->SetYRange(-1.2, 1.2) ;
        eta->SetPtRange(0., 50.) ;
        ctl->AddGenerator(eta,  "eta", 1., neutralsF);
    }
    return ctl;
}
AliGenerator *
GeneratorCustom()
{
  AliGenCocktail *ctl = GeneratorCocktail("Monash2013_Nuclex001");
  // pythia8
  AliGenerator   *py8 = GeneratorPythia8(kPythia8Tune_Monash2013);
  ctl->AddGenerator(py8, "Pythia8 (Monash2013)", 1.);
  //
  AliGenerator   *nu1a  = Generator_Nuclex(0x7, kFALSE, 7,6.f,1.f);
  AliGenerator   *nu1b  = Generator_Nuclex(0x7, kTRUE,  7,6.f,1.f);
  ctl->AddGenerator(nu1a,  "Nuclex1a", 1.);
  ctl->AddGenerator(nu1b,  "Nuclex1b", 1.);
  return ctl;
}
예제 #10
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;
}
예제 #11
0
AliGenerator *
GeneratorCustom(TString opt = "")
{
  TString optList[6] = {"", "a", "b", "c", "d", "e"};
  Int_t ninjlist[6] = {1, 10, 5, 3, 2, 1};
  Int_t iinj = 0;
  for (Int_t iopt = 0; iopt < 3; iopt++)
    if (opt.EqualTo(optList[iopt]))
      iinj = iopt;
  Int_t ninj = ninjlist[iinj];
  AliGenCocktail *ctl   = GeneratorCocktail("Hijing_Jets001");
  AliGenerator   *hij   = GeneratorHijing();
  ctl->AddGenerator(hij,  "Hijing", 1.);
  AliGenerator   *jet   = GeneratorPythia8Jets();
  ctl->AddGenerator(jet,  "Jets", 1., new TFormula(Form("ninj_%d", ninj), Form("%d", ninj)));
  return ctl;
}
예제 #12
0
AliGenerator* Hijing2000HF(Int_t typeHF)
{
  comment = comment.Append(" PbPb: Hjing2000 + pythia events for HF signals");

  AliGenCocktail *cocktail = new AliGenCocktail();
  cocktail->SetProjectile("A", 208, 82);
  cocktail->SetTarget    ("A", 208, 82);

  AliGenerator* pythiaHF = 0x0;
  // 20 Pythia events
  Int_t nPythia=20;
  for(Int_t i=0;i<nPythia; i++) {
    
    switch(typeHF) {
    case 0:
      pythiaHF = MbPythiaTunePerugia0chadr();
      break;
    case 1:
      pythiaHF = MbPythiaTunePerugia0bchadr();
      break;
    case 2:
      pythiaHF = MbPythiaTunePerugia0cele();
      break;
    case 3:
      pythiaHF = MbPythiaTunePerugia0bele();
      break;
    case 4:
      pythiaHF = MbPythiaTunePerugia0Jpsi2e();
      break;
    case 5:
      pythiaHF = MbPythiaTunePerugia0BtoJpsi2e();
      break;
    default:
      pythiaHF = MbPythiaTunePerugia0chadr();
      break;
    }
    cocktail->AddGenerator(pythiaHF,"pythiaHF",1); 
  }

  // 1 Hijing event  
  AliGenHijing *hijing = Hijing2000();
  cocktail->AddGenerator(hijing,"hijing",1);


  return cocktail;
}
예제 #13
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;
}
예제 #14
0
AliGenerator *GeneratorCustom(){

  int ninjxi = 3;
  int ninjom = 3;
  
  Int_t sign = uidConfig % 2 == 0 ? 1 : -1;
  
  AliGenCocktail *ctl  = GeneratorCocktail("EPOS_StrInj_pPb8");
  AliGenerator   *epos  = GeneratorEPOSLHC();
  
  AliGenerator   *ixi = GeneratorInjector(ninjxi, sign * 3312, 2., 20., -1.2, 1.2);
  AliGenerator   *iom = GeneratorInjector(ninjom, (-1) * sign * 3334, 0., 10., -1.2, 1.2);
  
  ctl->AddGenerator(epos,  "Epos", 1.);
  ctl->AddGenerator(ixi, "Injector (Xi)", 1.);
  ctl->AddGenerator(iom, "Injector (Omega)", 1.);

  return ctl;

}
예제 #15
0
AliGenerator *
GeneratorCustom()
{
    AliGenCocktail *ctl   = GeneratorCocktail("Perugia2011_Nuclex001");
    AliGenerator   *pyt   = GeneratorPythia6(kPythia6Tune_Perugia2011);
    ctl->AddGenerator(pyt,  "Pythia6", 1.);
    AliGenerator   *nu1a  = Generator_Nuclex(0xF, kFALSE, 10);
    AliGenerator   *nu1b  = Generator_Nuclex(0xF, kTRUE, 10);
    AliGenerator   *nu2a  = Generator_Nuclex(0x10, kFALSE, 40);
    AliGenerator   *nu2b  = Generator_Nuclex(0x10, kTRUE, 40);
    AliGenerator   *nu3a  = Generator_Nuclex(0xFE0, kFALSE, 20);
    AliGenerator   *nu3b  = Generator_Nuclex(0xFE0, kTRUE, 20);
    ctl->AddGenerator(nu1a,  "Nuclex1a", 1.);
    ctl->AddGenerator(nu1b,  "Nuclex1b", 1.);
    ctl->AddGenerator(nu2a,  "Nuclex2a", 1.);
    ctl->AddGenerator(nu2b,  "Nuclex2b", 1.);
    ctl->AddGenerator(nu3a,  "Nuclex3a", 1.);
    ctl->AddGenerator(nu3b,  "Nuclex3b", 1.);
    return ctl;
}
예제 #16
0
AliGenerator* CocktailSignals() {
  
  comment = comment.Append("Cocktail of various signals");

  AliGenCocktail *cocktail = new AliGenCocktail();

  // 1) Dummy generation of positive pions, to keep memory of the production vertex
  AliGenBox *dummyPionPos = new AliGenBox(20);
  dummyPionPos->SetYRange(-0.5, 0.5);
  dummyPionPos->SetPtRange(1., 10.);
  dummyPionPos->SetPart(211);
  cocktail->AddGenerator(dummyPionPos,"dummyPionPos",1);

  // 2) Dummy generation of negative pions, to keep memory of the production vertex
  AliGenBox *dummyPionNeg = new AliGenBox(20);
  dummyPionNeg->SetYRange(-0.5, 0.5);
  dummyPionNeg->SetPtRange(1., 10.);
  dummyPionNeg->SetPart(-211);
  cocktail->AddGenerator(dummyPionNeg,"dummyPionNeg",1);

  // 3) Generator for the custom signal
  AliGenerator* signalGen = 0x0;      
  if      (signal == kPythia6)                   signalGen = MbPythia(); 
  else if (signal == kPythiaPerugia0)            signalGen = MbPythiaTunePerugia0();
  else if (signal == kHijing)                    signalGen = Hijing();	
  else if (signal == kHijing2500)                signalGen = Hijing2500();	
  else if (signal == kGenBox)                    signalGen = GenBox();
  else if (signal == kGenMuonLMR)                signalGen = GenMuonLMR();
  else if (signal == kGenParamJpsi)              signalGen = GenParamJpsi();
  else if (signal == kGenCorrHF)                 signalGen = GenCorrHF();
  else if (signal == kGenPionKaon)               signalGen = GenParamPionKaon();
  else if (signal == kPythiaPerugia0BtoJpsi2mu)  signalGen = MbPythiaTunePerugia0BtoJpsi2mu();
  cocktail->AddGenerator(signalGen, "signal", 1);

  cocktail->SetTrackingFlag(1);

  return cocktail;

}
예제 #17
0
AliGenerator *
GeneratorCustom()
{
  AliGenCocktail *ctl = GeneratorCocktail("EPOSLHC_Jpsiee002");
  AliGenerator *epos = GeneratorEPOSLHC();
  ctl->AddGenerator(epos, "EPOS-LHC", 1.);
  if (uidConfig % 10 < 7)
    { // (params, jpsifrac, lowfrac, highfrac, bfrac) 
      AliGenerator *jpsi = Generator_Jpsiee("pPb 5.03", 0.7, 0.0, 0.3, 0.0); 
      ctl->AddGenerator(jpsi, "Jpsi2ee", 1., NULL, 3); 
      TFile *file = new TFile("typeHF_4.proc", "recreate"); 
      file->Close(); 
    }
  else
    { 
      AliGenerator *bjpsi = Generator_Jpsiee("Pythia BBar", 0.0, 0.0, 0.0, 1.0); 
      ctl->AddGenerator(bjpsi, "B2Jpsi2ee", 1., NULL, 1); 
      TFile *file = new TFile("typeHF_5.proc", "recreate"); 
      file->Close();
    }

  return ctl;
}
예제 #18
0
AliGenerator* Hijing2500Cocktail() {
  
  comment = comment.Append(" PbPb: Hjing2500 at 5.5 + muon signals");

  AliGenCocktail *cocktail = new AliGenCocktail();
  cocktail->SetProjectile("A", 208, 82);
  cocktail->SetTarget    ("A", 208, 82);
  cocktail->SetEnergyCMS(energy);

  // 1 Hijing event: provides underlying event and collision geometry 
  AliGenHijing *hijing = Hijing2500();
  cocktail->AddGenerator(hijing,"hijing",1);

  // generator for the custom signal
  AliGenerator* signalGen = 0x0;      
  switch (signal) {
  case 0:
    signalGen = GenBox();
    break;
  case 1:
    signalGen = GenMuonLMR(); 
    break;
  case 2:
    signalGen = GenCorrHF();
    break;
  default:
    signalGen = GenBox();
    break;
  }
  cocktail->AddGenerator(signalGen, "signal", 1);

  cocktail->SetTrackingFlag(1);

  return cocktail;

}
예제 #19
0
파일: Config.C 프로젝트: ktf/AliRoot
void Config()
{
    // ThetaRange is (0., 180.). It was (0.28,179.72) 7/12/00 09:00
    // Theta range given through pseudorapidity limits 22/6/2001

    // Set Random Number seed
  //gRandom->SetSeed(123456); // Set 0 to use the current time

  AliLog::Message(AliLog::kInfo, Form("Seed for random number generation = %d",gRandom->GetSeed()), "Config.C", "Config.C", "Config()","Config.C", __LINE__);


    new     TGeant3TGeo("C++ Interface to Geant3");

    AliRunLoader* rl=0x0;

    AliLog::Message(AliLog::kInfo, "Creating Run Loader", "Config.C", "Config.C", "Config()"," Config.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(3);
    gAlice->SetRunLoader(rl);



    // gAlice->SetGeometryFromFile("geometry.root");

    // Uncomment if you want to load geometry from OCDB!   >>>>
/*
    if(!AliCDBManager::Instance()->IsDefaultStorageSet()){
   cout << "#####################################################" << endl;
   cout << "#                                                   #" << endl;
   cout << "#     WARNING: CDB DEFAULT STORAGE NOT SET !!!      #" << endl;
   cout << "#     SETTING IT TO local://$ALICE_ROOT/OCDB !!!         #" << endl;
   cout << "#                                                   #" << endl;
   cout << "#####################################################" << endl;

         AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
    }

    if(AliCDBManager::Instance()->GetRun() < 0){
   cout << "#####################################################" << endl;
   cout << "#                                                   #" << endl;
   cout << "#     WARNING: RUN NUMBER NOT SET !!!               #" << endl;
   cout << "#     SETTING IT TO 0 !!!                           #" << endl;
   cout << "#                                                   #" << endl;
   cout << "#####################################################" << endl;

         AliCDBManager::Instance()->SetRun(0);
    }
    gAlice->SetGeometryFromCDB();
*/



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

    //
    // Set External decayer
    TVirtualMCDecayer *decayer = new AliDecayerPythia();

    decayer->SetForceDecay(kAll);
    decayer->Init();
    gMC->SetExternalDecayer(decayer);
    //=======================================================================
    // ************* 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); 

    int nParticles = 100;
      if (gSystem->Getenv("CONFIG_NPARTICLES"))
      {
        nParticles = atoi(gSystem->Getenv("CONFIG_NPARTICLES"));
      }

    AliGenCocktail *gener = new AliGenCocktail();
    gener->SetPhiRange(0, 360);
    // Set pseudorapidity range from -8 to 8.
    Float_t thmin = EtaToTheta(8);   // theta min. <---> eta max
    Float_t thmax = EtaToTheta(-8);  // theta max. <---> eta min
    gener->SetThetaRange(thmin,thmax);
    gener->SetOrigin(0, 0, 0);  //vertex position
    gener->SetSigma(0, 0, 0);   //Sigma in (X,Y,Z) (cm) on IP position

    AliGenUHKM *tuhkMgen = new AliGenUHKM(nParticles);
    tuhkMgen->SetAllParametersLHC();
    gener->AddGenerator(tuhkMgen,"TUHKM",1);

    gener->Init();

    //
    // Activate this line if you want the vertex smearing to happen
    // track by track
    //
    //gener->SetVertexSmear(perTrack);
    // Field (L3 0.4 T)
    TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG));

    Int_t   iABSO   = 1;
    Int_t   iDIPO   = 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   iZDC    = 1;
    Int_t   iEMCAL  = 1;
    Int_t   iACORDE = 1;
    Int_t   iVZERO  = 1;
    rl->CdGAFile();
    //=================== 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");
	FRAME->SetHoles(1);
    }

    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();
	// Partial geometry: modules at 0,1,7,8,9,10,17
	// starting at 3h in positive direction
	geoTRD->SetSMstatus(2,0);
	geoTRD->SetSMstatus(3,0);
	geoTRD->SetSMstatus(4,0);
        geoTRD->SetSMstatus(5,0);
	geoTRD->SetSMstatus(6,0);
        geoTRD->SetSMstatus(11,0);
        geoTRD->SetSMstatus(12,0);
        geoTRD->SetSMstatus(13,0);
        geoTRD->SetSMstatus(14,0);
        geoTRD->SetSMstatus(15,0);
        geoTRD->SetSMstatus(16,0);
    }

    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");
    }

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

     if (iVZERO)
    {
        //=================== VZERO parameters ============================
        AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
    }

     AliLog::Message(AliLog::kInfo, "End of Config", "Config.C", "Config.C", "Config()"," Config.C", __LINE__);

}
예제 #20
0
void Config()
{
    

  // Get settings from environment variables
  ProcessEnvironmentVars();

  gRandom->SetSeed(seed);
  cerr<<"Seed for random number generation= "<<seed<<endl; 

  // Libraries required by geant321
#if defined(__CINT__)
  gSystem->Load("liblhapdf");      // Parton density functions
  gSystem->Load("libEG");
  gSystem->Load("libEGPythia6");   // TGenerator interface
  gSystem->Load("libpythia6");     // Pythia
  gSystem->Load("libAliPythia6");  // ALICE specific implementations
  gSystem->Load("libgeant321");
  gSystem->Load("libTTherminator");
#endif

  new TGeant3TGeo("C++ Interface to Geant3");

  //=======================================================================
  //  Create the output file

   
  AliRunLoader* rl=0;;

  cout<<"Config.C: Creating Run Loader ..."<<endl;
//  rl = AliRunLoader::Open("galice.root");
  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(10000);
  gAlice->SetRunLoader(rl);
  
  
  // Set the trigger configuration
  if ((embedrun == kBackground) || (embedrun == kMerged)) {
//    AliSimulation::Instance()->SetTriggerConfig("Pb-Pb");
		AliSimulation::Instance()->SetTriggerConfig("");
    cout<<"Trigger configuration is set to  Pb-Pb"<<endl;
  }
  else {
    // Set the trigger configuration: proton-proton
    //    AliSimulation::Instance()->SetTriggerConfig("p-p");
    AliSimulation::Instance()->SetTriggerConfig("Pb-Pb");
    cout<<"Trigger configuration is set to  Pb-Pb"<<endl;
  }

  //
  // Set External decayer
  TVirtualMCDecayer *decayer = new AliDecayerPythia();
  
  decayer->SetForceDecay(kAll);
  decayer->Init();
  gMC->SetExternalDecayer(decayer);
  //=======================================================================
  // ************* 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); 
  
  //======================//
  // Set External decayer //
  //======================//
  TVirtualMCDecayer* decayer = new AliDecayerPythia();
  decayer->SetForceDecay(kAll);
  decayer->Init();
  gMC->SetExternalDecayer(decayer);
  
  if ((embedrun == kMerged) || (embedrun == kSignal) || (embedrun == kBackground)) {
    //=========================//
    // Generator Configuration //
    //=========================//
    AliGenerator* gener = 0x0;
    if (proc == kPythia6) {
      gener = MbPythia();
    } else if (proc == kPhojet) {
      gener = MbPhojet();
    } else if (proc == kJPsiPbPb) {
      gener = JPsiPbPb();
    } else if (proc == kJPsiPbPb2760) {
      gener = JPsiPbPb2760();
    } else if (proc == kJPsiHptPbPb2760) {
      gener = JPsiHptPbPb2760();
    } else if (proc == kBSignalPbPb2760) {
      gener = BSignalPbPb2760();
    }
    
  }
  else {
    AliGenCocktail *gener = new AliGenCocktail();
    gener->SetPhiRange(0, 360);
    // Set pseudorapidity range from -8 to 8.
    Float_t thmin = EtaToTheta(1);   // theta min. <---> eta max
    Float_t thmax = EtaToTheta(-1);  // theta max. <---> eta min 
    gener->SetThetaRange(thmin,thmax);
    gener->SetProjectile("A",208,82);
    gener->SetTarget("A",208,82);

    AliGenTherminator *genther = new AliGenTherminator();
    genther->SetFileName("event.out");
    genther->SetEventNumberInFile(1);
    genther->SetTemperature(0.145);
    genther->SetMiuI(-0.0009);
    genther->SetMiuS(0.000);
    genther->SetMiuB(0.0008);
    genther->SetAlfaRange(8.0);
    genther->SetRapRange(4.0);
    genther->SetRhoMax(7.74);
    genther->SetTau(9.74);
    genther->SetModel("Lhyquid3D");
    genther->SetLhyquidSet("LHC500C2030");

    gener->AddGenerator(genther, "THERMINATOR LHYQUID3D", 1);
  }
  
  
/*
  // PRIMARY VERTEX
  //
  gener->SetOrigin(0., 0., 0.);    // vertex position
  //
  //
  // Size of the interaction diamond
  // Longitudinal
  Float_t sigmaz;

  if (embedrun == kBackground) {
    sigmaz  = 7.55 / TMath::Sqrt(2.); // [cm]
  }
  else {
    Float_t sigmaz  = 5.4 / TMath::Sqrt(2.); // [cm]
    if (energy == 900)
      sigmaz  = 10.5 / TMath::Sqrt(2.); // [cm]
  }

  //
  // Transverse
  Float_t betast  = 10;                 // beta* [m]
  Float_t eps     = 3.75e-6;            // emittance [m]
  Float_t gamma   = energy / 2.0 / 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);
*/

  // PRIMARY VERTEX (will be overwritten by ip from real event)
  //
  gener->SetOrigin(0., 0., 0.);    // vertex position
  gener->SetSigma(0., 0., 0.); //Sigma in (X,Y,Z) (cm) on IP position
  gener->Init();

/*	
// Taken from GRP instead
  // FIELD
  //
// Field

    //  AliMagF* field = 0x0;
  if (mag == kNoField) {
    comment = comment.Append(" | L3 field 0.0 T");
    TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 0., 0., AliMagF::k5kGUniform));
  } else if (mag == k5kG) {
    comment = comment.Append(" | L3 field 0.5 T");
    TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG));
  }
  printf("\n \n Comment: %s \n \n", comment.Data());
  //  TGeoGlobalMagField::Instance()->SetField(field);
*/    
  rl->CdGAFile();
  
  Int_t iABSO  = 1;
  Int_t iACORDE= 0;
  Int_t iDIPO  = 1;
  Int_t iEMCAL = 0;
  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  = 0;
  Int_t iPIPE  = 1;
  Int_t iPMD   = 0;
  Int_t iHMPID = 0;
  Int_t iSHIL  = 1;
  Int_t iT0    = 0;
  Int_t iTOF   = 0;
  Int_t iTPC   = 0;
  Int_t iTRD   = 0;
  Int_t iVZERO = 1;
  Int_t iZDC   = 0;
  

    //=================== 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");
	FRAME->SetHoles(1);
    }

    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 AliITSv11Hybrid("ITS","ITS v11Hybrid");
			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 AliZDCv3("ZDC", "normal ZDC");
    }

    if (iTRD)
    {
        //=================== TRD parameters ============================

        AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
    }

    if (iFMD)
    {
        //=================== FMD parameters ============================

	AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
   }

    if (iMUON)
    {
        //=================== MUON parameters ===========================
        // New MUONv1 version (geometry defined via builders)
      const char* digitstore="AliMUONDigitStoreV2S";
      AliMUON *MUON = new AliMUONv1("MUON", "default");
      // activate trigger efficiency by cells
      MUON->SetTriggerEffCells(1);
      if (embedrun == kBackground) {
      	 digitstore="AliMUONDigitStoreV2R";
	 MUON->SetConvertTrigger(true);
      }
      MUON->SetDigitStoreClassName(digitstore);
      
      cout << "MUON DigitStore is " << MUON->DigitStoreClassName().Data() << endl;
      
      // Noise-only digits in tracker/trigger (0=no noise, 1=default (noise in tracker), 2=noise in tracker and trigger):
      cout << "****** DISABLING NOISE GENERATION AS WE DO EMBEDDING ******" << endl;
      MUON->SetDigitizerWithNoise(0);     

    }

    if (iPHOS)
    {
        //=================== PHOS parameters ===========================
        AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP");
    }


    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_COMPLETE");
    }

     if (iACORDE)
    {
        //=================== ACORDE parameters ============================

        AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");
    }

     if (iVZERO)
    {
        //=================== ACORDE parameters ============================

        AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
    }
}