ROOT logo
// -*- C++ -*-
// $Id$

// creates histogram of generated rho0 kinematical data
// writes a text file "rho0.txt" which should be identical to ../../test/rho0.txt

void testsl() {
  gSystem->Load("libStarLight");
  gSystem->Load("libAliStarLight.so");

  TStarLight* sl = new TStarLight("starlight generator", "title", "");

#if 1
  sl->SetParameter("BEAM_1_Z     =    1    #Z of projectile");
  sl->SetParameter("BEAM_1_A     =    1    #A of projectile");
  sl->SetParameter("BEAM_2_Z     =   82    #Z of target");
  sl->SetParameter("BEAM_2_A     =  208    #A of target");
  sl->SetParameter("BEAM_1_GAMMA = 4264.4  #Gamma of the colliding ions");
  sl->SetParameter("BEAM_2_GAMMA = 1682.4  #Gamma of the colliding ions");
#else
  sl->SetParameter("BEAM_1_Z     =   82    #Z of projectile");
  sl->SetParameter("BEAM_1_A     =  208    #A of projectile");
  sl->SetParameter("BEAM_2_Z     =   82    #Z of target");
  sl->SetParameter("BEAM_2_A     =  208    #A of target");
  sl->SetParameter("BEAM_2_GAMMA = 1470  #Gamma of the colliding ions");
  sl->SetParameter("BEAM_1_GAMMA = 1470  #Gamma of the colliding ions");
#endif
  sl->SetParameter("W_MAX        =   15    #Max value of w");
  sl->SetParameter("W_MIN        =    -1   #Min value of w");
  sl->SetParameter("W_N_BINS     =   40    #Bins i w");
  sl->SetParameter("RAP_MAX      =    8.   #max y");
  sl->SetParameter("RAP_N_BINS   =   80    #Bins i y");
  sl->SetParameter("CUT_PT       =    0    #Cut in pT? 0 = (no, 1 = yes)");
  sl->SetParameter("PT_MIN       =    1.0  #Minimum pT in GeV");
  sl->SetParameter("PT_MAX       =    3.0  #Maximum pT in GeV");
  sl->SetParameter("CUT_ETA      =    0    #Cut in pseudorapidity? (0 = no, 1 = yes)");
  sl->SetParameter("ETA_MIN      =  -10    #Minimum pseudorapidity");
  sl->SetParameter("ETA_MAX      =   10    #Maximum pseudorapidity");
  sl->SetParameter("PROD_MODE    =    4    #gg or gP switch (1 = 2-photon, 2 = coherent vector meson (narrow), 3 = coherent vector meson (wide), # 4 = incoherent vector meson, 5 = A+A DPMJet single, 6 = A+A DPMJet double, 7 = p+A DPMJet single, 8 = p+A Pythia single )");
  sl->SetParameter("PROD_PID     =  913    #Channel of interest (not relevant for photonuclear processes)");
  sl->SetParameter("RND_SEED     = 34533   #Random number seed");
  sl->SetParameter("BREAKUP_MODE  =   5    #Controls the nuclear breakup");
  sl->SetParameter("INTERFERENCE  =   0    #Interference (0 = off, 1 = on)");
  sl->SetParameter("IF_STRENGTH   =   1.   #% of intefernce (0.0 - 0.1)");
  sl->SetParameter("COHERENT      =   1    #Coherent=1,Incoherent=0");
  sl->SetParameter("INCO_FACTOR   =   1.   #percentage of incoherence");
  sl->SetParameter("INT_PT_MAX    =   0.24 #Maximum pt considered, when interference is turned on");
  sl->SetParameter("INT_PT_N_BINS = 120    #Number of pt bins when interference is turned on");

  sl->InitStarLight();
  sl->PrintInputs(std::cout);
  TClonesArray tca("TParticle", 100);

  TLorentzVector v[2], vSum;
  TH1* hM  = new TH1D("hM",  "STARLIGHT;M#(){#pi^{+}#pi^{-}}",     80, 0., 2.);
  TH1* hPt = new TH1D("hPt", "STARLIGHT;P_{T}#(){#pi^{+}#pi^{-}}", 80, 0., 2.);
  TH1* hY  = new TH1D("hY",  "STARLIGHT;Y#(){#pi^{+}#pi^{-}}",    100,-10., 10.);

  std::ofstream ofs("rho0.txt");
  TParticle *p;
  for (Int_t counter(0); counter<20000;) {
    sl->GenerateEvent();    
    sl->BoostEvent();    
    sl->ImportParticles(&tca, "ALL");
    Bool_t genOK = kTRUE;
    TLorentzVector vSum;
    for (Int_t i=0; i<tca.GetEntries() && genOK; ++i) {
      p = (TParticle*)tca.At(i);
      p->Momentum(v[i]);
      vSum += v[i];
//       genOK = TMath::Abs(v[i].Rapidity()) <= 1.5;
    }
    tca.Clear();
    if (!genOK) continue;
    Printf("counter, %d", counter, genOK);
    ++counter;
    vSum = v[0] + v[1];
    ofs << std::fixed << std::setprecision(4)
	<< vSum.M() << " " << vSum.Perp() << " " << vSum.Rapidity() << " "
	<< v[0].Eta() << " " << v[0].Px() << " " << v[0].Py() << " " << v[0].Pz() << " "
	<< v[1].Eta() << " " << v[1].Px() << " " << v[1].Py() << " " << v[1].Pz()
	<< std::endl;
    hM->Fill(vSum.M());
    hPt->Fill(vSum.Perp());
    hY->Fill(vSum.Rapidity());
  }
  TFile::Open("sl.root", "RECREATE");
  sl->Write();
  gFile->Write();

  hM->Draw();
  c1->SaveAs("SL.pdf(");
  hPt->Draw();
  c1->SaveAs("SL.pdf");
  hY->Draw();
  c1->SaveAs("SL.pdf)");
}
 testsl.C:1
 testsl.C:2
 testsl.C:3
 testsl.C:4
 testsl.C:5
 testsl.C:6
 testsl.C:7
 testsl.C:8
 testsl.C:9
 testsl.C:10
 testsl.C:11
 testsl.C:12
 testsl.C:13
 testsl.C:14
 testsl.C:15
 testsl.C:16
 testsl.C:17
 testsl.C:18
 testsl.C:19
 testsl.C:20
 testsl.C:21
 testsl.C:22
 testsl.C:23
 testsl.C:24
 testsl.C:25
 testsl.C:26
 testsl.C:27
 testsl.C:28
 testsl.C:29
 testsl.C:30
 testsl.C:31
 testsl.C:32
 testsl.C:33
 testsl.C:34
 testsl.C:35
 testsl.C:36
 testsl.C:37
 testsl.C:38
 testsl.C:39
 testsl.C:40
 testsl.C:41
 testsl.C:42
 testsl.C:43
 testsl.C:44
 testsl.C:45
 testsl.C:46
 testsl.C:47
 testsl.C:48
 testsl.C:49
 testsl.C:50
 testsl.C:51
 testsl.C:52
 testsl.C:53
 testsl.C:54
 testsl.C:55
 testsl.C:56
 testsl.C:57
 testsl.C:58
 testsl.C:59
 testsl.C:60
 testsl.C:61
 testsl.C:62
 testsl.C:63
 testsl.C:64
 testsl.C:65
 testsl.C:66
 testsl.C:67
 testsl.C:68
 testsl.C:69
 testsl.C:70
 testsl.C:71
 testsl.C:72
 testsl.C:73
 testsl.C:74
 testsl.C:75
 testsl.C:76
 testsl.C:77
 testsl.C:78
 testsl.C:79
 testsl.C:80
 testsl.C:81
 testsl.C:82
 testsl.C:83
 testsl.C:84
 testsl.C:85
 testsl.C:86
 testsl.C:87
 testsl.C:88
 testsl.C:89
 testsl.C:90
 testsl.C:91
 testsl.C:92
 testsl.C:93
 testsl.C:94
 testsl.C:95
 testsl.C:96
 testsl.C:97
 testsl.C:98