diff --git a/MC/DetectorConfig.C b/MC/DetectorConfig.C index bece28ea..f1c6aa68 100644 --- a/MC/DetectorConfig.C +++ b/MC/DetectorConfig.C @@ -157,6 +157,9 @@ DetectorConfig(Int_t tag) if( tag == kDetectorRun3 ) DetectorInitRun3(tag); + else if (tag == kDetectorFOCAL) { + gROOT->ProcessLine(".x $ALIDPG_ROOT/MC/DetectorInitFOCAL.C"); + } else DetectorInit(tag); } @@ -353,18 +356,7 @@ DetectorInit(Int_t tag) if (iPIPE) { //=================== PIPE parameters ============================ - if(tag == kDetectorFOCAL) { - AliPIPEFOCAL *PIPE = new AliPIPEFOCAL("PIPE", "Beam Pipe"); - PIPE->SetConical(35,400); - PIPE->SetZflange(483.8); - PIPE->SetR2(3.6); - PIPE->SetIsConeBe(1); - PIPE->SetIsFlangeBe(1); - PIPE->SetConeW(0.1); - } - else { - AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe"); - } + AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe"); } if (iITS) @@ -601,15 +593,6 @@ DetectorInit(Int_t tag) } } - if (iFOCAL) - { - //=================== FOCAL parameters ============================ - const char *gfname=""; - if (gSystem->Getenv("CONFIG_FOCALGEOMETRYFILE")) { - gfname = gSystem->Getenv("CONFIG_FOCALGEOMETRYFILE"); - } - AliFOCAL *FOCAL = new AliFOCALv1("FOCAL","FOCAL with HCAL at 7m",gfname); - } if (iFIT) { diff --git a/MC/DetectorInitFOCAL.C b/MC/DetectorInitFOCAL.C new file mode 100644 index 00000000..6ac0e094 --- /dev/null +++ b/MC/DetectorInitFOCAL.C @@ -0,0 +1,263 @@ +void DetectorInitFOCAL() { + Bool_t isGeant4 = kFALSE; + Bool_t isFluka = kFALSE; +/* +Special FOCAL simulations detector init + */ + + Int_t iABSO = 1; + Int_t iACORDE = 1; + Int_t iAD = 0; + Int_t iDIPO = 1; + Int_t iEMCAL = 1; + Int_t iFMD = 0; + Int_t iFRAME = 1; + Int_t iHALL = 1; + Int_t iITS = 1; + Int_t iMAG = 1; + Int_t iMUON = 1; + Int_t iPHOS = 1; + Int_t iPIPE = 1; + Int_t iPMD = 1; + Int_t iHMPID = 1; + Int_t iSHIL = 1; + Int_t iT0 = 0; + Int_t iTOF = 1; + Int_t iTPC = 1; + Int_t iTRD = 1; + Int_t iVZERO = 0; + Int_t iZDC = 0; + Int_t iFIT = 1; + Int_t iFOCAL = 1; + + Int_t year = atoi(gSystem->Getenv("CONFIG_YEAR")); + + //=================== Alice BODY parameters ============================= + AliBODY *BODY = new AliBODY("BODY", "Alice envelop"); + if (iMAG) { + //=================== MAG parameters ============================ + // --- Start with Magnet since detector layouts may be depending --- + // --- on the selected Magnet dimensions --- + AliMAG *MAG = new AliMAG("MAG", "Magnet"); + } + + if (iABSO) { + //=================== ABSO parameters ============================ + AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber"); + } + + if (iDIPO) { + //=================== DIPO parameters ============================ + AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3"); + } + + if (iHALL) { + //=================== HALL parameters ============================ + AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall"); + } + + if (iFRAME) { + //=================== FRAME parameters ============================ + if (year < 2015) { + AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame"); + FRAME->SetHoles(1); + } else { + AliFRAMEv3 *FRAME = new AliFRAMEv3("FRAME", "Space Frame"); + FRAME->SetHoles(1); + } + } + + if (iSHIL) { + //=================== SHIL parameters ============================ + AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3"); + } + + if (iPIPE) { + //=================== PIPE parameters (special FOCAL PIPE) ============================ + AliPIPEFOCAL *PIPE = new AliPIPEFOCAL("PIPE", "Beam Pipe"); + PIPE->SetConical(35,400); + PIPE->SetZflange(483.8); + PIPE->SetR2(3.6); + PIPE->SetIsConeBe(1); + PIPE->SetIsFlangeBe(1); + PIPE->SetConeW(0.1); + } + + if (iITS) { + //=================== ITS parameters ============================ + AliITS *ITS = new AliITSv11("ITS","ITS v11"); + } + + if (iTPC) { + //============================ TPC parameters ===================== + AliTPC *TPC = new AliTPCv2("TPC", "Default"); + if (isGeant4 || isFluka) + TPC->SetPrimaryIonisation(1); + } + + if (iTOF) { + //=================== TOF parameters ============================ + AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF"); + } + + if (iHMPID) { + //=================== HMPID parameters =========================== + AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID"); + } + + if (iZDC) { + //=================== ZDC parameters ============================ + AliZDC *ZDC; + if (year == 2010) { + ZDC = new AliZDCv3("ZDC", "normal ZDC"); + ZDC->SetSpectatorsTrack(); + ZDC->SetLumiLength(0.); + } else if (year < 2015) { + ZDC = new AliZDCv3("ZDC", "normal ZDC"); + //Collimators aperture + ZDC->SetVCollSideCAperture(0.85); + ZDC->SetVCollSideCCentre(0.); + ZDC->SetVCollSideAAperture(0.75); + ZDC->SetVCollSideACentre(0.); + //Detector position + ZDC->SetYZNC(1.6); + ZDC->SetYZNA(1.6); + ZDC->SetYZPC(1.6); + ZDC->SetYZPA(1.6); + } else { + ZDC = new AliZDCv4("ZDC", "normal ZDC"); + ZDC->SetLumiLength(0.); + ZDC->SetVCollSideCAperture(2.8); + ZDC->SetVCollSideCApertureNeg(2.8); + } + } + + if (iTRD) { + //=================== TRD parameters ============================ + AliTRDgeometry *geoTRD; + if (isGeant4) { + AliTRDtestG4 *TRD = new AliTRDtestG4("TRD", "TRD slow simulator"); + TRD->SetScaleG4(1.11); + geoTRD = TRD->GetGeometry(); + } else { + AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator"); + geoTRD = TRD->GetGeometry(); + } + // Partial geometry: modules at 0,1,7,8,9,16,17 + // starting at 3h in positive direction + + if ((year == 2010) || (year == 2009)) { + geoTRD->SetSMstatus(2,0); + geoTRD->SetSMstatus(3,0); + geoTRD->SetSMstatus(4,0); + geoTRD->SetSMstatus(5,0); + geoTRD->SetSMstatus(6,0); + geoTRD->SetSMstatus(11,0); + geoTRD->SetSMstatus(12,0); + geoTRD->SetSMstatus(13,0); + geoTRD->SetSMstatus(14,0); + geoTRD->SetSMstatus(15,0); + geoTRD->SetSMstatus(16,0); + } else if (year == 2011) { + geoTRD->SetSMstatus(2,0); + geoTRD->SetSMstatus(3,0); + geoTRD->SetSMstatus(4,0); + geoTRD->SetSMstatus(5,0); + geoTRD->SetSMstatus(6,0); + geoTRD->SetSMstatus(12,0); + geoTRD->SetSMstatus(13,0); + geoTRD->SetSMstatus(14,0); + } else if ((year == 2012) || (year ==2013)) { + geoTRD->SetSMstatus(4,0); + geoTRD->SetSMstatus(5,0); + geoTRD->SetSMstatus(12,0); + geoTRD->SetSMstatus(13,0); + geoTRD->SetSMstatus(14,0); + } + } + + if (iFMD) { + //=================== FMD parameters ============================ + AliFMD *FMD = new AliFMDv1("FMD", "normal FMD"); + } + + if (iMUON) { + //=================== MUON parameters =========================== + // New MUONv1 version (geometry defined via builders) + AliMUON *MUON = new AliMUONv1("MUON", "default"); + // activate trigger efficiency by cells + MUON->SetTriggerEffCells(1); // backward compatibility + MUON->SetTriggerResponseV1(2); // backward compatibility + } + + if (iPHOS) { + //=================== PHOS parameters =========================== + if (year < 2015) { + AliPHOS *PHOS = new AliPHOSv1("PHOS", "noCPV_Modules123"); + } else { + AliPHOS *PHOS = new AliPHOSv1("PHOS", "Run2"); + } + if (gSystem->Getenv("CONFIG_PHOS_TIMERES")) { + if ( !strcmp(gSystem->Getenv("CONFIG_PHOS_TIMERES"), "off") ) { + printf("*** PHOS time resolution off\n"); + AliPHOSSimParam::GetInstance()->SetTOFparameters(1.e-12,1.e-12) ; + } + } + } + + if (iPMD) { + //=================== PMD parameters ============================ + AliPMD *PMD = new AliPMDv1("PMD", "normal PMD"); + } + + if (iT0) { + //=================== T0 parameters ============================ + AliT0 *T0 = new AliT0v1("T0", "T0 Detector"); + } + + if (iEMCAL) { + //=================== EMCAL parameters ============================ + //Cannot use EMCAL as name since it collides with EMCAL namespace definition + AliEMCAL *EMCAL_DET = new AliEMCALv2("EMCAL", "EMCAL_COMPLETE12SMV1_DCAL_8SM"); + // by default Run2 configuration name but the proper geometry name is taken + // automatically depending on the anchor run + // 2010 - 4 SM, 2011 - 10 SM, 2012 - 12 SM, >2014 - 20 SM + } + + if (iACORDE) { + //=================== ACORDE parameters ============================ + AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); + } + + if (iVZERO) { + //=================== ACORDE parameters ============================ + AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); + } + + if (iAD) { + if (!isFluka) { // does not work for now with Fluka + //=================== AD parameters ============================ + // AliAD *AD = new AliADv1("AD", "normal AD"); + AliAD *AD = NULL; + if (year>0) + AD = new AliADv1("AD", Form("normal AD year=%d", year)); + else + AD = new AliADv1("AD", "normal AD"); + } else { + Printf("AD is disabled, as we are using Fluka"); + } + } + + if (iFOCAL) { + //=================== FOCAL parameters ============================ + const char *gfname=""; + if (gSystem->Getenv("CONFIG_FOCALGEOMETRYFILE")) { + gfname = gSystem->Getenv("CONFIG_FOCALGEOMETRYFILE"); + } + AliFOCAL *FOCAL = new AliFOCALv1("FOCAL","FOCAL with HCAL at 7m",gfname); + } + + if (iFIT) { + AliFIT *fit = new AliFITv8("FIT","FIT"); + } +} diff --git a/MC/dpgsim.sh b/MC/dpgsim.sh index caf4551a..2ca382ce 100755 --- a/MC/dpgsim.sh +++ b/MC/dpgsim.sh @@ -516,7 +516,6 @@ while [ ! -z "$1" ]; do elif [ "$option" = "--cleanEsd" ]; then export CONFIG_CLEANESD="$1" shift - fi elif [ "$option" = "--focalGeometryFile" ]; then export CONFIG_FOCALGEOMETRYFILE="$1" shift @@ -905,6 +904,9 @@ echo "No. Events....... $CONFIG_NBKG" #echo "MC seed.......... $CONFIG_SEED (based on $CONFIG_SEED_BASED)" echo "============================================" echo "Detector......... $CONFIG_DETECTOR" +if [ "$CONFIG_DETECTOR" = "FOCAL" ]; then +echo "FOCAL geom file.. $CONFIG_FOCALGEOMETRYFILE" +fi echo "PHOS Time Res.... $CONFIG_PHOS_TIMERES" echo "GEANT4........... $CONFIG_GEANT4" echo "GEANT4 Phy List.. $CONFIG_GEANT4PHYSLIST"