-enum gentype_t {hijing, gun, box, pythia, param, cocktail, fluka, halo, ntuple, scan, doublescan};
+enum EGeneratorTypes {kHijing, kGun, kBox, kPythia, kParam, kCcocktail, kFluka, kHalo, kNtuple, kScan,
+ kDoubleScan};
-gentype_t gentype=gun;
-ntracks=1;
+EGeneratorTypes gentype=kBox;
+Int_t ntracks=50;
void Config()
{
-
+ cout<<"RICH private Config.C> Start\n";
new AliGeant3("C++ Interface to Geant3");
//=======================================================================
rootfile->SetCompressionLevel(2);
TGeant3 *geant3 = (TGeant3*)gMC;
-//geant3->Grndmq(0,0,55," ");
+//
+// Set Random Number seed
+ gRandom->SetSeed(10);
//=======================================================================
// ******* GEANT 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
- switch(gentype)
- {
- case gun:
-//*********************************************
-// Example for Fixed Particle Gun *
-//*********************************************
+ switch(gentype){
+ case kGun:
AliGenFixed *gener = new AliGenFixed(ntracks);
gener->SetMomentum(3);
- gener->SetPhiRange(92);
- gener->SetThetaRange(90);
- gener->SetOrigin(0,0,0); //vertex position
+ gener->SetPhiRange(90);
+ gener->SetThetaRange(101);
+ gener->SetOrigin(0,480,-20); //vertex position
gener->SetPart(kPiPlus); //GEANT particle type
- break;
- case box:
-//*********************************************
-// Example for Moving Particle Gun *
-//*********************************************
+ break;
+ case kBox:
AliGenBox *gener = new AliGenBox(ntracks);
- gener->SetMomentumRange(3,3);
- gener->SetPhiRange(80,100);
- gener->SetThetaRange(80,100);
+ gener->SetMomentumRange(2,2);
+ gener->SetPhiRange(90,120);
+ gener->SetThetaRange(85,95);
gener->SetOrigin(0,0,0);
gener->SetVertexSmear(kPerTrack);
//vertex position
gener->SetSigma(1.8, 1.8,0); //Sigma in (X,Y,Z) (cm) on IP position
gener->SetPart(kPiPlus); //GEANT particle type
- break;
- case scan:
-//*********************************************
-// Scanning on a grid *
-//*********************************************
+ break;
+ case kScan:
AliGenScan *gener = new AliGenScan(-1);
gener->SetMomentumRange(3,3);
gener->SetPhiRange(90,90);
//vertex position
gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position
gener->SetPart(kPiPlus);
- gener->SetRange(5, -80, 60, 1, 480, 480, 5, -80, 60);
- break;
- case doublescan:
-//*********************************************
-// Scanning on a grid *
-//*********************************************
+ gener->SetRange(1, 430, 430, 1, 430, 430, 1, 430, 430);
+ break;
+ case kSoubleScan:
AliGenDoubleScan *gener = new AliGenDoubleScan(-1);
gener->SetMomentumRange(3,3);
gener->SetPhiRange(0,360);
gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position
gener->SetPart(kPiPlus);
gener->SetRange(20, -60, 60, 1, 480, 480, 20, -60, 60);
- gener->SetDistance(1);
-
- break;
-
- case hijing:
+ gener->SetDistance(1);
+ break;
+ case kHijing:
AliGenHIJINGpara *gener = new AliGenHIJINGpara(ntracks);
gener->SetMomentumRange(0,999);
gener->SetPhiRange(0,360);
gener->SetThetaRange(.77,179.23);
gener->SetOrigin(0,0,0); //vertex position
gener->SetSigma(0,0,5.6); //Sigma in (X,Y,Z) (cm) on IP position
- break;
-
- case pythia:
-//********************************************
-// Example for Charm Production with Pythia *
-//********************************************
-
+ break;
+ case kPythia:
AliGenPythia *gener = new AliGenPythia(ntracks);
gener->SetMomentumRange(0,999);
gener->SetPhiRange(0,360);
// gener->SetStrucFunc(DO_Set_1);
gener->SetProcess(mb);
gener->SetEnergyCMS(5500.);
- break;
-
- case param:
-//*******************************************************
-// Example for J/psi Production from Parameterisation *
-//*******************************************************
+ break;
+ case kParam:
AliGenParam *gener = new AliGenParam(178,Eta,
AliGenPHOSlib::GetPt(Eta),
AliGenPHOSlib::GetY(Eta),
gener->SetOrigin(0,0,0); //vertex position
gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position
gener->SetCutOnChild(1);
- break;
-
- case fluka:
-//*******************************************************
-// Example for a FLUKA Boundary Source *
-//*******************************************************
+ break;
+ case kFluka:
AliGenFLUKAsource *gener = new AliGenFLUKAsource(-1);
gener->AddFile("$(ALICE_ROOT)/data/all32.root");
rootfile->cd();
// 31.7 events
gener->SetFraction(0.0315);
- break;
-
- case ntuple:
-//*******************************************************
-// Example for reading from a external file *
-//*******************************************************
+ break;
+ case kNtuple:
AliGenExtFile *gener = new AliGenExtFile(-1);
gener->SetFileName("$(ALICE_ROOT)/data/dtujet93.root");
gener->SetVertexSmear(perEvent);
gener->SetTrackingFlag(1);
- break;
-
- case halo:
-//*******************************************************
-// Example for Tunnel Halo Source *
-//*******************************************************
+ break;
+ case kHalo:
AliGenHalo *gener = new AliGenHalo(ntracks);
gener->SetFileName("/h1/morsch/marsip/marsip5.mu");
- break;
-
- case cocktail:
-//*******************************************************
-// Example for a Cocktail *
-//*******************************************************
+ break;
+ case kCocktail:
AliGenCocktail *gener = new AliGenCocktail();
gener->SetMomentumRange(0,10);
gener->SetPhiRange(0,360);
break;
- }
+ }//switch
// Activate this line if you want the vertex smearing to happen
// track by track
//
-gener->SetVertexSmear(kPerTrack);
-gener->Init();
-gAlice->SetField(0,2); //Specify maximum magnetic field in Tesla (neg. ==> default field)
+ gener->SetVertexSmear(kPerTrack);
+ gener->Init();
+
+ gAlice->SetField(0,2); //Specify maximum magnetic field in Tesla (neg. ==> default field)
Int_t iMAG=0;
Int_t iITS=0;
-Int_t iTPC=0;
+Int_t iTPC=1;
Int_t iTOF=0;
Int_t iRICH=1;
Int_t iZDC=0;
Int_t iMUON=0;
Int_t iPHOS=0;
Int_t iPMD=0;
-Int_t iSTART=0;
+Int_t iSTART=1;
//=================== Alice BODY parameters =============================
AliBODY *BODY = new AliBODY("BODY","Alice envelop");
if(iITS) {
-//=================== ITS parameters ============================
-//
-// EUCLID is a flag to output (=1) both geometry and media to two ASCII files
-// (called by default ITSgeometry.euc and ITSgeometry.tme) in a format
-// understandable to the CAD system EUCLID. The default (=0) means that you
-// dont want to use this facility.
-//
-AliITS *ITS = new AliITSv1("ITS","normal ITS");
-ITS->SetEUCLID(0);
+ //=================== ITS parameters ===========================
+ //
+ // As the innermost detector in ALICE, the Inner Tracking System "impacts" on
+ // almost all other detectors. This involves the fact that the ITS geometry
+ // still has several options to be followed in parallel in order to determine
+ // the best set-up which minimizes the induced background. All the geometries
+ // available to date are described in the following. Read carefully the comments
+ // and use the default version (the only one uncommented) unless you are making
+ // comparisons and you know what you are doing. In this case just uncomment the
+ // ITS geometry you want to use and run Aliroot.
+ //
+ // Detailed geometries:
+ // ====================
+ //
+ //
+ //AliITS *ITS = new AliITSv3("ITS","Old ITS detailed version as of the ALICE TP");
+ //
+ //AliITS *ITS = new AliITSv5("ITS","Current ITS detailed version used for the ITS TDR");
+ //
+ //AliITS *ITS = new AliITSv5symm("ITS","Updated ITS TDR detailed version with symmetric services");
+ //
+ //AliITS *ITS = new AliITSv5asymm("ITS","Updates ITS TDR detailed version with asymmetric services");
+ //
+ //
+ // Coarse geometries (warning: no hits are produced with these coarse geometries and they unuseful for reconstruction !):
+ // ======================================================================================================================
+ //
+ //
+ //AliITS *ITS = new AliITSv1("ITS","Old ITS coarse version as of the ALICE TP");
+ //
+ AliITS *ITS = new AliITSvPPRcoarseasymm("ITS","New ITS coarse version with asymmetric services");
+ //
+ //AliITS *ITS = new AliITSvPPRcoarsesymm("ITS","New ITS coarse version with symmetric services");
+ //
+ //
+ // Geant3 <-> EUCLID conversion
+ // ============================
+ //
+ // SetEUCLID is a flag to output (=1) or not to output (=0) both geometry and
+ // media to two ASCII files (called by default ITSgeometry.euc and
+ // ITSgeometry.tme) in a format understandable to the CAD system EUCLID.
+ // The default (=0) means that you dont want to use this facility.
+ //
+ ITS->SetEUCLID(0);
}
//
//-----------------------------------------------------------------------------
- gROOT->LoadMacro("SetTPCParam.C");
+ /* gROOT->LoadMacro("SetTPCParam.C");
AliTPCParam *param = SetTPCParam();
AliTPC *TPC = new AliTPCv0("TPC","Normal TPC"); //v1 is default
TPC->SetParam(param); // pass the parameter object to the TPC
+
+ // set gas mixture
+
+ TPC->SetGasMixt(2,20,10,-1,0.9,0.1,0.);
+ TPC->SetSecAL(4);
+ TPC->SetSecAU(4);
+ TPC->SetSecLows(1, 2, 3, 19, 20, 21);
+ TPC->SetSecUps(37, 38, 39, 37+18, 38+18, 39+18, -1, -1, -1, -1, -1, -1);
+ TPC->SetSens(1);
+
+ if (TPC->IsVersion()==1) param->Write(param->GetTitle());*/
+
+ AliTPC *TPC = new AliTPCv0("TPC","Default");
+ // All sectors included
+ TPC->SetSecAL(-1);
+ TPC->SetSecAU(-1);
-// set gas mixture
-
-TPC->SetGasMixt(2,20,10,-1,0.9,0.1,0.);
-TPC->SetSecAL(4);
-TPC->SetSecAU(4);
-TPC->SetSecLows(1, 2, 3, 19, 20, 21);
-TPC->SetSecUps(37, 38, 39, 37+18, 38+18, 39+18, -1, -1, -1, -1, -1, -1);
-TPC->SetSens(1);
-
-if (TPC->IsVersion()==1) param->Write(param->GetTitle());
}
if(iTOF) {
//=================== TOF parameters ============================
-AliTOF *TOF = new AliTOFv0("TOF","normal TOF");
+AliTOF *TOF = new AliTOFv2("TOF","normal TOF");
}
+
+ gAlice->SetDebug(1);
-if(iRICH) {
-//=================== RICH parameters ===========================
- AliRICH *RICH = new AliRICHv2("RICH","normal RICH");
-
-//
-// Version 0
-// Default Segmentation
- AliRICHSegmentationV1* SegmentationV0 = new AliRICHSegmentationV1;
-//
-// Segmentation parameters
- SegmentationV0->SetPadSize(0.8,0.84);
- SegmentationV0->SetDAnod(0.84/2);
-
-// Geometry parameters
- AliRICHGeometry* GeometryV0 = new AliRICHGeometry;
- GeometryV0->SetGapThickness(8);
- GeometryV0->SetProximityGapThickness(.4);
- GeometryV0->SetQuartzLength(133);
- GeometryV0->SetQuartzWidth(127.9);
- GeometryV0->SetQuartzThickness(.5);
- GeometryV0->SetOuterFreonLength(133);
- GeometryV0->SetOuterFreonWidth(41.3);
- GeometryV0->SetInnerFreonLength(133);
- GeometryV0->SetInnerFreonWidth(41.3);
- GeometryV0->SetFreonThickness(1.5);
-
-// Response parameters
- AliRICHResponseV0* Rresponse0 = new AliRICHResponseV0;
- Rresponse0->SetSigmaIntegration(5.);
- Rresponse0->SetChargeSlope(27.);
- Rresponse0->SetChargeSpread(0.18, 0.18);
- Rresponse0->SetMaxAdc(4096);
- Rresponse0->SetAlphaFeedback(0.036);
- Rresponse0->SetEIonisation(26.e-9);
- Rresponse0->SetSqrtKx3(0.77459667);
- Rresponse0->SetKx2(0.962);
- Rresponse0->SetKx4(0.379);
- Rresponse0->SetSqrtKy3(0.77459667);
- Rresponse0->SetKy2(0.962);
- Rresponse0->SetKy4(0.379);
- Rresponse0->SetPitch(0.25);
-
-
- for (Int_t i=0; i<7; i++) {
- RICH->SetGeometryModel(i,GeometryV0);
- RICH->SetSegmentationModel(i, SegmentationV0);
- RICH->SetResponseModel(i, Rresponse0);
- RICH->SetNsec(i,1);
- }
- RICH->SetDebugLevel(0);
-}
+ if(iRICH){
+ AliRICH *RICH = new AliRICHv3("RICH","normal RICH");
+ }//if(iRICH)
if(iZDC) {
AliSTART *START = new AliSTARTv0("START","START Detector");
}
-
-}
+ cout<<"RICH private Config.C> End\n";
+}//void Config()