1 Int_t iRICH = 3;//0-1-3
3 enum EGenTypes {kGun1,kGun7,kPP7};
5 static EGenTypes kGen=kGun1;
6 static Int_t kEventsPerFile=50;
8 Int_t iPIPE = 0;//central before RICH
15 Int_t iMAG = 0;//central after RICH
21 Int_t iSTART = 0;//forward
36 ::Info("kir","Start RICH VERSION %i debug %i",iRICH,gAlice->GetDebug());
40 Geant3(); File(); Decayer(); Field(); Other();
45 gRICH=new AliRICHv0("RICH","coarse RICH for material budget");
48 gRICH=new AliRICHv1("RICH","detailed RICH for full simulation");
51 gRICH=new AliRICHv3("RICH","old parametrised RICH with rotation");
56 case kPP7: Pythia7(pid=kPiPlus,p=4); break;
57 case kGun7: Gun7(pid=kPiPlus,p=4); break;
58 case kGun1: Gun1(n=1,pid=kPiPlus,p=4,chamber=4); break;
59 default: Fatal("Config","No generator"); break;
61 ::Info("kir","Stop.");
64 void Gun1(Int_t iNprim,Int_t iPID,Double_t p,Int_t iChamber)
66 ::Info("kir-Gun1","%i primaries of %i PID with p=%f GeV",iNprim,iPID,p);
68 AliGenFixed *pGen=new AliGenFixed(iNprim);
70 pGen->SetPhiRange(gRICH->C(iChamber)->PhiD());
71 pGen->SetThetaRange(gRICH->C(iChamber)->ThetaD()+2);
72 pGen->SetOrigin(0,0,0);
80 ::Info("kir-Para","%i primaries",iNprim);
82 AliGenHIJINGpara *pGen=new AliGenHIJINGpara(iNprim);
83 pGen->SetMomentumRange(0,999); //GeV
84 pGen->SetPhiRange(0,360); //degree
85 pGen->SetThetaRange(Eta2Theta(8),Eta2Theta(-8)); //degree
86 pGen->SetOrigin(0,0,0); //IP, cm
87 pGen->SetSigma(0,0,0); //IP sigma, cm
92 void Gun7(Int_t iPID,Double_t p)
94 ::Info("kir-Gun7","7 primaries of %i PID with p=%f GeV",iPID,p);
95 AliGenCocktail *pCocktail=new AliGenCocktail();
96 for(int i=1;i<=7;i++){
97 AliGenFixed *pFixed=new AliGenFixed(1);
98 pFixed->SetMomentum(p);
99 pFixed->SetPhiRange(gRICH->C(i)->PhiD());
100 pFixed->SetThetaRange(gRICH->C(i)->ThetaD()+2);
101 pFixed->SetOrigin(0,0,0);
102 pFixed->SetPart(iPID);
103 pCocktail->AddGenerator(pFixed,Form("Fixed %i",i),1);
108 void Pythia7(Int_t iPID,Double_t p)
110 ::Info("kir-Pythia","7 primaries of %i PID with p=%f GeV plus Pythia",iPID,p);
111 AliGenCocktail *pCocktail=new AliGenCocktail();
112 for(int i=1;i<=7;i++){
113 AliGenFixed *pFixed=new AliGenFixed(1);
114 pFixed->SetMomentum(p);
115 pFixed->SetPhiRange(gRICH->C(i)->PhiD());
116 pFixed->SetThetaRange(gRICH->C(i)->ThetaD()+2);
117 pFixed->SetOrigin(0,0,0);
118 pFixed->SetPart(iPID);
119 pCocktail->AddGenerator(pFixed,Form("Fixed %i",i),1);
122 AliGenPythia *pPythia = new AliGenPythia(-1);
123 pPythia->SetMomentumRange(0,999999);
124 pPythia->SetPhiRange(0,360);
125 pPythia->SetThetaRange(0., 180.);
126 pPythia->SetYRange(-12,12);
127 pPythia->SetPtRange(0,1000);
128 pPythia->SetStrucFunc(kCTEQ4L);
129 pPythia->SetProcess(kPyMb);
130 pPythia->SetEnergyCMS(14000.);
132 pCocktail->AddGenerator(pPythia,"Pythia",1);
145 ::Info("kir-File","Create galice.root, %i events per file",kEventsPerFile);
147 AliRunLoader *pRL = AliRunLoader::Open("galice.root",AliConfig::fgkDefaultEventFolderName,"recreate");
149 Fatal("my/AliceConfig.C::File","Can not instatiate the Run Loader");
151 pRL->SetCompressionLevel(2);
152 pRL->SetNumberOfEventsPerFile(kEventsPerFile);
153 gAlice->SetRunLoader(pRL);
158 ::Info("kir-Geant3","Initialize the actual MC code.");
160 gSystem->Load("libgeant321.so");
161 new TGeant3("C++ Interface to Geant");
166 ::Info("kir-Decayer","Initialise external decayer.");
167 TVirtualMCDecayer *pDecayer = new AliDecayerPythia();
168 pDecayer->SetForceDecay(kAll);
170 gMC->SetExternalDecayer(pDecayer);
172 gMC->SetProcess("DCAY",1);
173 gMC->SetProcess("PAIR",1);
174 gMC->SetProcess("COMP",1);
175 gMC->SetProcess("PHOT",1);
176 gMC->SetProcess("PFIS",0);
177 gMC->SetProcess("DRAY",0);
178 gMC->SetProcess("ANNI",1);
179 gMC->SetProcess("BREM",1);
180 gMC->SetProcess("MUNU",1);
181 gMC->SetProcess("CKOV",1);
182 gMC->SetProcess("HADR",1);
183 gMC->SetProcess("LOSS",2);
184 gMC->SetProcess("MULS",1);
185 gMC->SetProcess("RAYL",1);
187 Float_t cut = 1.e-3; // 1MeV cut by default
188 Float_t tofmax = 1.e10;
190 gMC->SetCut("CUTGAM", cut);
191 gMC->SetCut("CUTELE", cut);
192 gMC->SetCut("CUTNEU", cut);
193 gMC->SetCut("CUTHAD", cut);
194 gMC->SetCut("CUTMUO", cut);
195 gMC->SetCut("BCUTE", cut);
196 gMC->SetCut("BCUTM", cut);
197 gMC->SetCut("DCUTE", cut);
198 gMC->SetCut("DCUTM", cut);
199 gMC->SetCut("PPCUTM", cut);
200 gMC->SetCut("TOFMAX", tofmax);
205 ::Info("kir-Field","Set default magnetic field L3 0.4T.");
206 //AliMagFMaps* pField = new AliMagFMaps("Maps","Maps", 2, 1., 10., 1);
212 ::Info("kir-Other","Init all other detectors");
213 AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
216 new AliMAG("MAG", "Magnet");
220 new AliABSOv0("ABSO", "Muon Absorber");
224 new AliDIPOv2("DIPO", "Dipole version 2");
228 new AliHALL("HALL", "Alice Hall");
232 AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
237 new AliSHILv2("SHIL", "Shielding Version 2");
241 AliPIPEv0("PIPE", "Beam Pipe");
245 AliITSvPPRasymm *ITS = new AliITSvPPRasymm("ITS","New ITS PPR detailed version with asymmetric services");
246 ITS->SetMinorVersion(2); // don't touch this parameter if you're not an ITS developer
247 ITS->SetReadDet(kFALSE); // don't touch this parameter if you're not an ITS developer
248 ITS->SetThicknessDet1(200.); // detector thickness on layer 1 must be in the range [100,300]
249 ITS->SetThicknessDet2(200.); // detector thickness on layer 2 must be in the range [100,300]
250 ITS->SetThicknessChip1(200.); // chip thickness on layer 1 must be in the range [150,300]
251 ITS->SetThicknessChip2(200.); // chip thickness on layer 2 must be in the range [150,300]
252 ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out
253 ITS->SetCoolingFluid(1); // 1 --> water ; 0 --> freon
258 AliTPC *TPC = new AliTPCv2("TPC", "Default");
264 new AliTOFv2FHoles("TOF", "TOF with Holes");
268 new AliZDCv2("ZDC", "normal ZDC");
272 AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
276 AliTRDsim *TRDsim = TRD->CreateTR();
280 AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
281 FMD->SetRingsSi1(256);
282 FMD->SetRingsSi2(128);
283 FMD->SetSectorsSi1(20);
284 FMD->SetSectorsSi2(40);
288 new AliMUONv1("MUON", "default");
291 new AliPHOSv1("PHOS", "IHEP");
295 new AliPMDv1("PMD", "normal PMD");
299 new AliSTARTv1("START", "START Detector");
303 new AliEMCALv1("EMCAL", "EMCALArch1a");
307 new AliCRTv0("CRT", "normal ACORDE");
311 new AliVZEROv2("VZERO", "normal VZERO");
314 ::Info("kir-Other","Stop.");
317 Float_t Eta2Theta(Float_t arg)
319 return (180./TMath::Pi())*2.*atan(exp(-arg));