void Config()
{
-new AliGeant3("C++ Interface to Geant3");
+
+ gSystem->Load("libgeant321");
+ new TGeant3("C++ Interface to Geant3");
+ TGeant3 *geant3 = (TGeant3*)gMC;
//=======================================================================
// Create the output file
rootfile->SetCompressionLevel(2);
TGeant3 *geant3 = (TGeant3*)gMC;
AliDecayer* decayer = new AliDecayerPythia();
- decayer->SetForceDecay(all);
+ decayer->SetForceDecay(kAll);
decayer->Init();
gMC->SetExternalDecayer(decayer);
//=======================================================================
// ******* GEANT STEERING parameters FOR ALICE SIMULATION *******
- geant3->fGctrak->maxnst=1000000;
- geant3->fGcflag->nrndm[0]=10;
- geant3->fGcflag->nrndm[1]=11;
geant3->SetTRIG(1); //Number of events to be processed
geant3->SetSWIT(4,100);
geant3->SetDEBU(0,0,1);
// GAM ELEC NHAD CHAD MUON EBREM MUHAB EDEL MUDEL MUPA TOFMAX
geant3->SetCUTS(1.e-4, 1.e-4, 1.e-3, 1.e-4, 1.e-3, cut, cut, cut, cut, cut, 1.e-5);
- gAlice->TrackingLimits( 700, 2000);
+gAlice->TrackingLimits(700, 2000);
//
//=======================================================================
//vertex position
gener->SetSigma(1,1,0); //Sigma in (X,Y,Z) (cm) on IP position
gener->SetPart(kMuonMinus);
- gener->SetRange(60, -300, 300, 60, -300., 300., 1, 900, 900);
+ gener->SetRange(100, -300., 300., 100, -300., 300., 1, 900, 900);
break;
case doublescan:
//*********************************************
gener->SetPhiRange(-180,180);
gener->SetThetaRange(0.104,90.0);
// gener->SetFlavor(4);
-
-
gener->SetOrigin(0., 0.0 ,0);
gener->SetSigma(0,0,5.3);
gener->SetVertexSmear(kPerEvent);
//gener->SetVertexSmear(kPerEvent);
//gener->SetSigma(0,0,5.6); // Sigma in (X,Y,Z) (cm) on IP
position
- gener->SetStrucFunc(DO_Set_1);
- gener->SetProcess(charm);
+ gener->SetStrucFunc(kDO_Set_1);
+ gener->SetProcess(kPyCharm);
gener->SetEnergyCMS(5500.);
break;
/*
*/
case param:
//*******************************************************
-// Example for J/psi Production from Parameterisation *
+// Example for J/psi or Upsilon Production from Parameterisation *
//*******************************************************
- AliGenParam *gener = new AliGenParam(ntracks,upsilon_p);
+ AliGenParam *gener = new AliGenParam(ntracks, AliGenMUONlib::kUpsilon);
gener->SetMomentumRange(0,999);
+ gener->SetPtRange(0.,100.);
gener->SetPhiRange(-180, 180);
gener->SetYRange(2.5,4);
gener->SetCutOnChild(1);
- gener->SetChildThetaRange(2,9);
+ gener->SetChildThetaRange(2.0,9);
gener->SetOrigin(0,0,0); //vertex position
gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position
- gener->SetForceDecay(dimuon);
+ gener->SetForceDecay(kDiMuon);
gener->SetTrackingFlag(1);
break;
gener->SetPhiRange(0,360);
gener->SetThetaRange(2.,9.);
gener->SetTrackingFlag(0);
- AliGenParam *Pi0 = new AliGenParam(100, new AliGenPMDlib(), Pion);
- AliGenParam *Eta = new AliGenParam( 10, new AliGenPMDlib(), Eta);
+ AliGenParam *Pi0 = new AliGenParam(100, new AliGenPMDlib(), AliGenPMDlib::kPion);
+ AliGenParam *Eta = new AliGenParam( 10, new AliGenPMDlib(), AliGenPMDlib::kEta);
gener->AddGenerator(Pi0, "neutral pions" , 1.);
gener->AddGenerator(Eta, "neutral etas" , 1.);
break;
Int_t iFRAME =0;
Int_t iMAG =0;
Int_t iITS =0;
-Int_t iABSO =0;
-Int_t iDIPO =0;
+Int_t iABSO =1;
+Int_t iDIPO =1;
Int_t iHALL =0;
-Int_t iSHIL =0;
+Int_t iSHIL =1;
Int_t iPIPE =0;
Int_t iFMD =0;
Int_t iMUON =1;
if(iSHIL) {
//=================== SHIL parameters ============================
// AliSHIL *SHIL = new AliSAROV("SHIL","Shielding");
- AliSHILv0 *SHIL = new AliSHILv0("SHIL","Shielding");
+ AliSHILvF *SHIL = new AliSHILvF("SHIL","Shielding");
SHIL->SetPbCone(1);
// AliSAROV *SHIL = new AliSAROV("SHIL","Shielding");
}
//=================== MUON parameters ===========================
AliMUON *MUON = new AliMUONv1("MUON","normal MUON");
- MUON->SetIshunt(1);
+ MUON->SetIshunt(0);
MUON->SetMaxStepGas(0.1);
MUON->SetMaxStepAlu(0.1);
//
//
Int_t chamber;
Int_t station;
-// Default response
+ // Default response: 5 mm of gas
AliMUONResponseV0* response0 = new AliMUONResponseV0;
- response0->SetSqrtKx3AndDeriveKx2Kx4(0.7131);
- response0->SetSqrtKy3AndDeriveKy2Ky4(0.7642);
- //response0->SetSqrtKx3(0.7131);
- //response0->SetKx2(1.0107);
- //response0->SetKx4(0.4036);
- //response0->SetSqrtKy3(0.7642);
- //response0->SetKy2(0.9706);
- //response0->SetKy4(0.3831);
- response0->SetPitch(0.25);
+ response0->SetSqrtKx3AndDeriveKx2Kx4(0.7131); // sqrt(0.5085)
+ response0->SetSqrtKy3AndDeriveKy2Ky4(0.7642); // sqrt(0.5840)
+ response0->SetPitch(0.25); // anode-cathode distance
response0->SetSigmaIntegration(10.);
response0->SetChargeSlope(50);
response0->SetChargeSpread(0.18, 0.18);
response0->SetMaxAdc(4096);
response0->SetZeroSuppression(6);
+
+ // Response for 4 mm of gas (station 1)
+ // automatic consistency with width of sensitive medium in CreateGeometry ????
+ AliMUONResponseV0* responseSt1 = new AliMUONResponseV0;
+ // Mathieson parameters from L.Kharmandarian's thesis, page 190
+ responseSt1->SetSqrtKx3AndDeriveKx2Kx4(0.7000); // sqrt(0.4900)
+ responseSt1->SetSqrtKy3AndDeriveKy2Ky4(0.7550); // sqrt(0.5700)
+ responseSt1->SetPitch(0.20); // anode-cathode distance
+ responseSt1->SetSigmaIntegration(10.);
+ // ChargeSlope larger to compensate for the smaller anode-cathode distance
+ // and keep the same most probable ADC channel for mip's
+ responseSt1->SetChargeSlope(62.5);
+ // assumed proportionality to anode-cathode distance for ChargeSpread
+ responseSt1->SetChargeSpread(0.144, 0.144);
+ responseSt1->SetMaxAdc(4096);
+ responseSt1->SetZeroSuppression(6);
+
//--------------------------------------------------------
// Configuration for Chamber TC1/2 (Station 1) ----------
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//^^^^^^^^^
MUON->SetNsec(chamber-1,2);
//
- AliMUONSegmentationV01 *seg11=new AliMUONSegmentationV01;
+ AliMUONSegmentationV01 *seg11=new AliMUONSegmentationV01(4);
seg11->SetSegRadii(rseg1);
- seg11->SetPadSize(3, 0.5);
- seg11->SetDAnod(3.0/3./4);
+ seg11->SetPadSize(2.4, 0.4); // smaller pad size
+ seg11->SetDAnod(0.20); // smaller distance between anode wires
seg11->SetPadDivision(nseg1);
MUON->SetSegmentationModel(chamber-1, 1, seg11);
-//
- AliMUONSegmentationV02 *seg12=new AliMUONSegmentationV02;
+
+ AliMUONSegmentationV02 *seg12=new AliMUONSegmentationV02(4);
seg12->SetSegRadii(rseg1);
- seg12->SetPadSize(0.75, 2.0);
- seg12->SetDAnod(3.0/3./4);
+ seg12->SetPadSize(0.6, 1.6); // smaller pad size
+ seg12->SetDAnod(0.20); // smaller distance between anode wires
seg12->SetPadDivision(nseg1);
MUON->SetSegmentationModel(chamber-1, 2, seg12);
- MUON->SetResponseModel(chamber-1, response0);
+ MUON->SetResponseModel(chamber-1, responseSt1); // special response
+ MUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
chamber=2;
//^^^^^^^^^
//
MUON->SetNsec(chamber-1,2);
//
- AliMUONSegmentationV01 *seg21=new AliMUONSegmentationV01;
+ AliMUONSegmentationV01 *seg21=new AliMUONSegmentationV01(4);
seg21->SetSegRadii(rseg1);
- seg21->SetPadSize(3, 0.5);
- seg21->SetDAnod(3.0/3./4);
+ seg21->SetPadSize(2.4, 0.4); // smaller pad size
+ seg21->SetDAnod(0.20); // smaller distance between anode wires
seg21->SetPadDivision(nseg1);
MUON->SetSegmentationModel(chamber-1, 1, seg21);
//
- AliMUONSegmentationV02 *seg22=new AliMUONSegmentationV02;
+ AliMUONSegmentationV02 *seg22=new AliMUONSegmentationV02(4);
seg22->SetSegRadii(rseg1);
- seg22->SetPadSize(0.75, 2.);
- seg22->SetDAnod(3.0/3./4);
+ seg22->SetPadSize(0.6, 1.6); // smaller pad size
+ seg22->SetDAnod(0.20); // smaller distance between anode wires
seg22->SetPadDivision(nseg1);
MUON->SetSegmentationModel(chamber-1, 2, seg22);
- MUON->SetResponseModel(chamber-1, response0);
+ MUON->SetResponseModel(chamber-1, responseSt1); // special response
+ MUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
+
//
//--------------------------------------------------------
// Configuration for Chamber TC3/4 (Station 2) -----------
//^^^^^^^^^
MUON->SetNsec(chamber-1,2);
//
- AliMUONSegmentationV01 *seg31=new AliMUONSegmentationV01;
+ AliMUONSegmentationV01 *seg31=new AliMUONSegmentationV01(4);
seg31->SetSegRadii(rseg2);
- seg31->SetPadSize(6, 0.5);
+ seg31->SetPadSize(3.0, 0.5);
seg31->SetDAnod(3.0/3./4);
seg31->SetPadDivision(nseg2);
MUON->SetSegmentationModel(chamber-1, 1, seg31);
//
- AliMUONSegmentationV02 *seg32=new AliMUONSegmentationV02;
+ AliMUONSegmentationV02 *seg32=new AliMUONSegmentationV02(4);
seg32->SetSegRadii(rseg2);
- seg32->SetPadSize(0.75, 4.);
+ seg32->SetPadSize(0.75, 2.0);
seg32->SetPadDivision(nseg2);
seg32->SetDAnod(3.0/3./4);
MUON->SetSegmentationModel(chamber-1, 2, seg32);
MUON->SetResponseModel(chamber-1, response0);
+ MUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
chamber=4;
//^^^^^^^^^
//
MUON->SetNsec(chamber-1,2);
//
- AliMUONSegmentationV01 *seg41=new AliMUONSegmentationV01;
+ AliMUONSegmentationV01 *seg41=new AliMUONSegmentationV01(4);
seg41->SetSegRadii(rseg2);
- seg41->SetPadSize(6, 0.5);
+ seg41->SetPadSize(3.0, 0.5);
seg41->SetDAnod(3.0/3./4);
seg41->SetPadDivision(nseg2);
MUON->SetSegmentationModel(chamber-1, 1, seg41);
//
- AliMUONSegmentationV02 *seg42=new AliMUONSegmentationV02;
+ AliMUONSegmentationV02 *seg42=new AliMUONSegmentationV02(4);
seg42->SetSegRadii(rseg2);
- seg42->SetPadSize(0.75, 4.);
+ seg42->SetPadSize(0.75, 2.0);
seg42->SetPadDivision(nseg2);
seg42->SetDAnod(3.0/3./4);
MUON->SetSegmentationModel(chamber-1, 2, seg42);
MUON->SetResponseModel(chamber-1, response0);
+ MUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
//--------------------------------------------------------
0,0,2,0};
Float_t shift = 1.5/2.;
- // Float_t xpos5[8] = {2., 2., 2., 42., 42., 2., 2., 2.};
- Float_t xpos5[9] = {2., 2., 2., 2.,32., 2., 2., 2., 2.};
+ Float_t xpos5[9] = {2., 2., 2., 2.,33., 2., 2., 2., 2.};
Float_t ypos5 = -(20.+4.*(40.-2.*shift));
chamber=5;
MUON->SetNsec(chamber-1,2);
- AliMUONSegmentationSlat *seg51=new AliMUONSegmentationSlat;
+ AliMUONSegmentationSlat *seg51=new AliMUONSegmentationSlat(4);
seg51->SetNSlats(9);
seg51->SetShift(shift);
seg51->SetNPCBperSector(npcb5);
seg51->SetPadDivision(nseg3);
MUON->SetSegmentationModel(chamber-1, 1, seg51);
- AliMUONSegmentationSlatN *seg52=new AliMUONSegmentationSlatN;
+ AliMUONSegmentationSlatN *seg52=new AliMUONSegmentationSlatN(4);
seg52->SetNSlats(9);
seg52->SetShift(shift);
seg52->SetNPCBperSector(npcb5);
seg52->SetPadDivision(nseg3);
MUON->SetSegmentationModel(chamber-1, 2, seg52);
MUON->SetResponseModel(chamber-1, response0);
+ MUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
chamber=6;
MUON->SetNsec(chamber-1,2);
- AliMUONSegmentationSlat *seg61=new AliMUONSegmentationSlat;
+ AliMUONSegmentationSlat *seg61=new AliMUONSegmentationSlat(4);
seg61->SetNSlats(9);
seg61->SetShift(shift);
seg61->SetNPCBperSector(npcb5);
seg61->SetPadDivision(nseg3);
MUON->SetSegmentationModel(chamber-1, 1, seg61);
- AliMUONSegmentationSlatN *seg62=new AliMUONSegmentationSlatN;
+ AliMUONSegmentationSlatN *seg62=new AliMUONSegmentationSlatN(4);
seg62->SetNSlats(9);
seg62->SetShift(shift);
seg62->SetNPCBperSector(npcb5);
seg62->SetPadDivision(nseg3);
MUON->SetSegmentationModel(chamber-1, 2, seg62);
MUON->SetResponseModel(chamber-1, response0);
+ MUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
//--------------------------------------------------------
// Configuration for Chamber TC7/8 (Station 4) ----------
MUON->SetNsec(chamber-1,2);
//
- AliMUONSegmentationSlat *seg71=new AliMUONSegmentationSlat;
+ AliMUONSegmentationSlat *seg71=new AliMUONSegmentationSlat(4);
Int_t npcb7[44] = {0,0,0,3,
0,0,2,2,
0,0,3,2,
0,0,3,2,
0,0,2,2,
0,0,0,3};
- Float_t xpos7[11] = {2., 2., 2., 2., 2., 39.5, 2., 2., 2., 2., 2.};
+ Float_t xpos7[11] = {2., 2., 2., 2., 2., 40.5, 2., 2., 2., 2., 2.};
Float_t ypos7 = -(20.+5.*(40.-2.*shift));
seg71->SetNSlats(11);
seg71->SetPadDivision(nseg4);
MUON->SetSegmentationModel(chamber-1, 1, seg71);
- AliMUONSegmentationSlatN *seg72=new AliMUONSegmentationSlatN;
+ AliMUONSegmentationSlatN *seg72=new AliMUONSegmentationSlatN(4);
MUON->SetSegmentationModel(chamber-1, 2, seg72);
seg72->SetNSlats(11);
seg72->SetPadDivision(nseg4);
MUON->SetResponseModel(chamber-1, response0);
+ MUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
chamber=8;
//^^^^^^^^^
MUON->SetNsec(chamber-1,2);
//
- AliMUONSegmentationSlat *seg81=new AliMUONSegmentationSlat;
+ AliMUONSegmentationSlat *seg81=new AliMUONSegmentationSlat(4);
seg81->SetNSlats(11);
seg81->SetShift(shift);
seg81->SetPadDivision(nseg4);
MUON->SetSegmentationModel(chamber-1, 1, seg81);
- AliMUONSegmentationSlat *seg82=new AliMUONSegmentationSlatN;
+ AliMUONSegmentationSlat *seg82=new AliMUONSegmentationSlatN(4);
MUON->SetSegmentationModel(chamber-1, 2, seg82);
seg82->SetNSlats(11);
seg82->SetPadDivision(nseg4);
MUON->SetResponseModel(chamber-1, response0);
+ MUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
//--------------------------------------------------------
MUON->SetNsec(chamber-1,2);
//
- AliMUONSegmentationSlat *seg91=new AliMUONSegmentationSlat;
+ AliMUONSegmentationSlat *seg91=new AliMUONSegmentationSlat(4);
Int_t npcb9[52] = {0,0,0,3,
0,0,0,4,
0,0,2,3,
0,0,0,4,
0,0,0,3};
- // Float_t xpos9[13] = {2., 2., 2., 2., 2., 2., 39.5 , 2., 2., 2., 2., 2., 2.};
- Float_t xpos9[13] = {2., 2., 2., 2., 2., 2., 39.5, 2., 2., 2., 2., 2., 2.};
+ Float_t xpos9[13] = {2., 2., 2., 2., 2., 2., 40.5, 2., 2., 2., 2., 2., 2.};
Float_t ypos9 = -(20.+6.*(40.-2.*shift));
seg91->SetNSlats(13);
seg91->SetPadDivision(nseg4);
MUON->SetSegmentationModel(chamber-1, 1, seg91);
- AliMUONSegmentationSlatN *seg92=new AliMUONSegmentationSlatN;
+ AliMUONSegmentationSlatN *seg92=new AliMUONSegmentationSlatN(4);
MUON->SetSegmentationModel(chamber-1, 2, seg92);
seg92->SetNSlats(13);
seg92->SetPadDivision(nseg4);
MUON->SetResponseModel(chamber-1, response0);
+ MUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
chamber=10;
//^^^^^^^^^
MUON->SetNsec(chamber-1,2);
//
- AliMUONSegmentationSlat *seg101=new AliMUONSegmentationSlat;
+ AliMUONSegmentationSlat *seg101=new AliMUONSegmentationSlat(4);
seg101->SetNSlats(13);
seg101->SetShift(shift);
seg101->SetPadDivision(nseg4);
MUON->SetSegmentationModel(chamber-1, 1, seg101);
- AliMUONSegmentationSlatN *seg102=new AliMUONSegmentationSlatN;
+ AliMUONSegmentationSlatN *seg102=new AliMUONSegmentationSlatN(4);
MUON->SetSegmentationModel(chamber-1, 2, seg102);
seg102->SetNSlats(13);
seg102->SetPadDivision(nseg4);
MUON->SetResponseModel(chamber-1, response0);
+ MUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
//--------------------------------------------------------
// Configuration for Trigger Stations --------------------
MUON->SetSegmentationModel(chamber-1, 2, seg112);
MUON->SetResponseModel(chamber-1, responseTrigger0);
+ MUON->Chamber(chamber-1).SetChargeCorrel(0); // same charge on cathodes
chamber=12;
AliMUONSegmentationTriggerY *seg122=new AliMUONSegmentationTriggerY;
MUON->SetSegmentationModel(chamber-1, 2, seg122);
- MUON->SetResponseModel(chamber-1, responseTrigger0);
+ MUON->SetResponseModel(chamber-1, responseTrigger0);
+ MUON->Chamber(chamber-1).SetChargeCorrel(0); // same charge on cathodes
+
chamber=13;
MUON->SetNsec(chamber-1,2);
AliMUONSegmentationTriggerX *seg131=new AliMUONSegmentationTriggerX;
AliMUONSegmentationTriggerY *seg132=new AliMUONSegmentationTriggerY;
MUON->SetSegmentationModel(chamber-1, 2, seg132);
MUON->SetResponseModel(chamber-1, responseTrigger0);
+ MUON->Chamber(chamber-1).SetChargeCorrel(0); // same charge on cathodes
chamber=14;
MUON->SetNsec(chamber-1,2);
MUON->SetSegmentationModel(chamber-1, 2, seg142);
MUON->SetResponseModel(chamber-1, responseTrigger0);
-
+ MUON->Chamber(chamber-1).SetChargeCorrel(0); // same charge on cathodes
}
-
}