1 typedef enum {kPhojet = -1,kPyTuneCDFA=100,kPyTuneAtlasCSC=306, kPyTuneCMS6D6T=109, kPyTunePerugia0=320 } Tune_t;
3 AliGenerator* CreateGenerator(Tune_t tune = kPyTuneCDFA , Float_t energy);
5 void fastGen(Tune_t tune = kPyTuneCDFA , Float_t energy, Int_t nev = 1, TString process)
7 // Add all particles to the PDG database
8 AliPDG::AddParticlesToPdgDataBase();
10 // set the random seed
12 UInt_t seed = date.Get()+gSystem->GetPid();
13 gRandom->SetSeed(seed);
14 cout<<"Seed for random number generation= "<<seed<<endl;
18 AliRunLoader* rl = AliRunLoader::Open("galice.root", "FASTRUN","recreate");
20 rl->SetCompressionLevel(2);
21 rl->SetNumberOfEventsPerFile(nev);
22 rl->LoadKinematics("RECREATE");
24 gAlice->SetRunLoader(rl);
28 AliStack* stack = rl->Stack();
31 AliHeader* header = rl->GetHeader();
33 // Create and Initialize Generator
34 AliGenerator *gener = CreateGenerator(tune,energy);
36 // if nsd switch off single diffraction
37 if ( process == "NSD"){
39 AliPythia::Instance()-> SetMSUB(92,0); // single diffraction AB-->XB
40 AliPythia::Instance()-> SetMSUB(93,0); // single diffraction AB-->AX
43 cout << "NSD not yet implemented in the phojet case" << endl;
47 gener->SetStack(stack);
54 for (iev = 0; iev < nev; iev++) {
56 if(!(iev%500)) printf("\n \n Event number %d \n \n", iev);
60 rl->SetEventNumber(iev);
63 // stack->ConnectTree();
68 // Int_t npart = stack->GetNprimary();
69 // printf("Analyse %d Particles\n", npart);
70 // for (Int_t part=0; part<npart; part++) {
71 // TParticle *MPart = stack->Particle(part);
72 // Int_t mpart = MPart->GetPdgCode();
73 // printf("Particle %d\n", mpart);
77 header->SetNprimary(stack->GetNprimary());
78 header->SetNtrack(stack->GetNtrack());
82 header->SetStack(stack);
84 rl->WriteKinematics("OVERWRITE");
92 rl->WriteHeader("OVERWRITE");
99 AliGenerator* CreateGenerator(Tune_t tune, Float_t energy)
107 AliGenDPMjet* gener = new AliGenDPMjet(1);
108 gener->SetProcess(kDpmMb);
109 gener->SetProjectile("P", 1, 1);
110 gener->SetTarget("P", 1, 1);
112 gener->SetEnergyCMS(energy);
116 if (tune != kPyTuneAtlasCSC && tune != kPyTuneCDFA && tune != kPyTuneCMS6D6T && tune != kPyTunePerugia0) {
118 Printf("Unknown pythia tune, quitting");
123 AliGenPythia * gener = new AliGenPythia(1);
126 gener->SetTune(tune);
128 // structure function
129 if(tune == kPyTuneAtlasCSC) {
130 cout << "Setting structure function" << endl;
131 gener->SetStrucFunc(kCTEQ61);
133 if(tune == kPyTuneCMS6D6T) {
134 cout << "Setting structure function" << endl;
135 gener->SetStrucFunc(kCTEQ6l);
137 if(tune == kPyTunePerugia0) {
138 cout << "Setting new parton shower" << endl;
139 gener->UseNewMultipleInteractionsScenario();
141 // charm, beauty, charm_unforced, beauty_unforced, jpsi, jpsi_chi, mb
142 gener->SetProcess(kPyMb);
143 // Centre of mass energy
144 gener->SetEnergyCMS(energy);
146 // Set target/projectile // Is this needded?
147 gener->SetProjectile("P", 1, 1);
148 gener->SetTarget("P", 1, 1);