X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EMCAL%2Fmacros%2FConfig.C;h=80e8fc2b4f2a1c5b2c65392979d7339cebcaecdf;hb=ece7ec1a810f3ff71f230b70adb6d9674481bb44;hp=7c2700bd64310db4e79cacfd6365de2d455c6e20;hpb=9808f677d7178aa61d3329462eb8cb99643566dd;p=u%2Fmrichter%2FAliRoot.git diff --git a/EMCAL/macros/Config.C b/EMCAL/macros/Config.C old mode 100755 new mode 100644 index 7c2700bd643..80e8fc2b4f2 --- a/EMCAL/macros/Config.C +++ b/EMCAL/macros/Config.C @@ -26,7 +26,7 @@ #include "STRUCT/AliFRAMEv2.h" #include "STRUCT/AliSHILv3.h" #include "STRUCT/AliPIPEv3.h" -#include "ITS/AliITSvPPRasymmFMD.h" +#include "ITS/AliITSv11.h" #include "TPC/AliTPCv2.h" #include "TOF/AliTOFv6T0.h" #include "HMPID/AliHMPIDv2.h" @@ -44,306 +44,367 @@ Float_t EtaToTheta(Float_t arg); void LoadPythia(); +AliGenerator *GenParamCalo(Int_t nPart, Int_t type, TString calo); -Int_t year =2011; +Int_t year = 2012; +Bool_t checkGeoAndRun = kFALSE; void Config() { //AliLog::SetGlobalDebugLevel(2); - - // ThetaRange is (0., 180.). It was (0.28,179.72) 7/12/00 09:00 - // Theta range given through pseudorapidity limits 22/6/2001 - - // Set Random Number seed - //gRandom->SetSeed(123456); // Set 0 to use the currecnt time + + // ThetaRange is (0., 180.). It was (0.28,179.72) 7/12/00 09:00 + // Theta range given through pseudorapidity limits 22/6/2001 + + // Set Random Number seed + //gRandom->SetSeed(123456); // Set 0 to use the currecnt time AliLog::Message(AliLog::kInfo, Form("Seed for random number generation = %d",gRandom->GetSeed()), "Config.C", "Config.C", "Config()","Config.C", __LINE__); - + // Load Pythia libraries LoadPythia(); - - // libraries required by geant321 + + // libraries required by geant321 #if defined(__CINT__) - gSystem->Load("libgeant321"); + gSystem->Load("libgeant321"); #endif - - new TGeant3TGeo("C++ Interface to Geant3"); - - AliRunLoader* rl=0x0; - - AliLog::Message(AliLog::kInfo, "Creating Run Loader", "Config.C", "Config.C", "Config()"," Config.C", __LINE__); - - rl = AliRunLoader::Open("galice.root", - AliConfig::GetDefaultEventFolderName(), - "recreate"); - if (rl == 0x0) - { - gAlice->Fatal("Config.C","Can not instatiate the Run Loader"); - return; - } - rl->SetCompressionLevel(2); - rl->SetNumberOfEventsPerFile(100); - gAlice->SetRunLoader(rl); - - // Set the trigger configuration - AliSimulation::Instance()->SetTriggerConfig("Pb-Pb"); - cout<<"Trigger configuration is set to Pb-Pb"<SetForceDecay(kAll); - decayer->Init(); - gMC->SetExternalDecayer(decayer); - //======================================================================= - // ************* 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 - - - gMC->SetProcess("DCAY",1); - gMC->SetProcess("PAIR",1); - gMC->SetProcess("COMP",1); - gMC->SetProcess("PHOT",1); - gMC->SetProcess("PFIS",0); - gMC->SetProcess("DRAY",0); - gMC->SetProcess("ANNI",1); - gMC->SetProcess("BREM",1); - gMC->SetProcess("MUNU",1); - gMC->SetProcess("CKOV",1); - gMC->SetProcess("HADR",1); - gMC->SetProcess("LOSS",2); - gMC->SetProcess("MULS",1); - gMC->SetProcess("RAYL",1); - - Float_t cut = 1.e-3; // 1MeV cut by default - Float_t tofmax = 1.e10; - - gMC->SetCut("CUTGAM", cut); - gMC->SetCut("CUTELE", cut); - gMC->SetCut("CUTNEU", cut); - gMC->SetCut("CUTHAD", cut); - gMC->SetCut("CUTMUO", cut); - gMC->SetCut("BCUTE", cut); - gMC->SetCut("BCUTM", cut); - gMC->SetCut("DCUTE", cut); - gMC->SetCut("DCUTM", cut); - gMC->SetCut("PPCUTM", cut); - gMC->SetCut("TOFMAX", tofmax); - - - int nParticles = 5; - if (gSystem->Getenv("CONFIG_NPARTICLES")) - { - nParticles = atoi(gSystem->Getenv("CONFIG_NPARTICLES")); - } - - if (gSystem->Getenv("CONFIG_YEAR")) - { - year = atoi(gSystem->Getenv("CONFIG_YEAR")); - } - - AliGenBox *gener = new AliGenBox(nParticles); - gener->SetMomentumRange(1.,10.); - if(year > 2010) - gener->SetPhiRange(80.0,180.0); - else if(year == 2010) - gener->SetPhiRange(80.0,120.0); - else - gener->SetPhiRange(80.0,190.0); - - gener->SetThetaRange(EtaToTheta(0.7), EtaToTheta(-0.7)); - - gener->SetOrigin(0,0,0); //vertex position - gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position - gener->SetPart(kGamma); - gener->Init(); - - // - // Activate this line if you want the vertex smearing to happen - // track by track - // - //gener->SetVertexSmear(perTrack); - // Field (L3 0.5 T) - TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG)); - - Int_t iABSO = 0; - Int_t iDIPO = 0; - Int_t iFMD = 0; - Int_t iFRAME = 0; - Int_t iHALL = 0; - Int_t iITS = 0; - Int_t iMAG = 0; - Int_t iMUON = 0; - Int_t iPHOS = 0; - Int_t iPIPE = 0; - Int_t iPMD = 0; - Int_t iHMPID = 0; - Int_t iSHIL = 0; - Int_t iT0 = 0; - Int_t iTOF = 0; - Int_t iTPC = 0; - Int_t iTRD = 0; - Int_t iZDC = 0; - Int_t iEMCAL = 1; - Int_t iACORDE = 0; - Int_t iVZERO = 0; - rl->CdGAFile(); - //=================== 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 ============================ - - AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame"); - } - - if (iSHIL) - { - //=================== SHIL parameters ============================ - - AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3"); - } - - - if (iPIPE) - { - //=================== PIPE parameters ============================ - - AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe"); - } + + new TGeant3TGeo("C++ Interface to Geant3"); + + AliRunLoader* rl=0x0; + + AliLog::Message(AliLog::kInfo, "Creating Run Loader", "Config.C", "Config.C", "Config()"," Config.C", __LINE__); + + rl = AliRunLoader::Open("galice.root", + AliConfig::GetDefaultEventFolderName(), + "recreate"); + if (rl == 0x0) + { + gAlice->Fatal("Config.C","Can not instatiate the Run Loader"); + return; + } + rl->SetCompressionLevel(2); + rl->SetNumberOfEventsPerFile(10000); + gAlice->SetRunLoader(rl); + + // Set the trigger configuration + AliSimulation::Instance()->SetTriggerConfig("Pb-Pb"); + cout<<"Trigger configuration is set to Pb-Pb"<SetForceDecay(kAll); + decayer->Init(); + gMC->SetExternalDecayer(decayer); + //======================================================================= + // ************* 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 + + + gMC->SetProcess("DCAY",1); + gMC->SetProcess("PAIR",1); + gMC->SetProcess("COMP",1); + gMC->SetProcess("PHOT",1); + gMC->SetProcess("PFIS",0); + gMC->SetProcess("DRAY",0); + gMC->SetProcess("ANNI",1); + gMC->SetProcess("BREM",1); + gMC->SetProcess("MUNU",1); + gMC->SetProcess("CKOV",1); + gMC->SetProcess("HADR",1); + gMC->SetProcess("LOSS",2); + gMC->SetProcess("MULS",1); + gMC->SetProcess("RAYL",1); + + Float_t cut = 1.e-3; // 1MeV cut by default + Float_t tofmax = 1.e10; + + gMC->SetCut("CUTGAM", cut); + gMC->SetCut("CUTELE", cut); + gMC->SetCut("CUTNEU", cut); + gMC->SetCut("CUTHAD", cut); + gMC->SetCut("CUTMUO", cut); + gMC->SetCut("BCUTE", cut); + gMC->SetCut("BCUTM", cut); + gMC->SetCut("DCUTE", cut); + gMC->SetCut("DCUTM", cut); + gMC->SetCut("PPCUTM", cut); + gMC->SetCut("TOFMAX", tofmax); + + + int nParticles = 1; + if (gSystem->Getenv("CONFIG_NPARTICLES")) + { + nParticles = atoi(gSystem->Getenv("CONFIG_NPARTICLES")); + } + + if (gSystem->Getenv("CONFIG_YEAR")) + { + year = atoi(gSystem->Getenv("CONFIG_YEAR")); + } + + AliGenBox *gener = new AliGenBox(nParticles); + gener->SetMomentumRange(10.,10.); + + gener->SetPart(22); + + if (year == 2010) + gener->SetPhiRange(80.0,120.0); + else if(year == 2011) + gener->SetPhiRange(80.0,180.0); + else if(year == 2012 || year == 2013) + gener->SetPhiRange(80.0,190.0); + else + gener->SetPhiRange(80.0,330.0); // Include DCal + + gener->SetThetaRange(EtaToTheta(0.7), EtaToTheta(-0.7)); + +// AliGenLib* lib = new AliGenPHOSlib(); +// Int_t type = AliGenPHOSlib::kEtaFlat; +// AliGenParam *gener = new AliGenParam(1,lib,type,""); +// gener->SetMomentumRange(0,999); +// gener->SetPtRange(1,30); +// gener->SetPhiRange(80, 200.); +// gener->SetYRange(-2,2); +// gener->SetThetaRange(EtaToTheta(0.7),EtaToTheta(-0.7)); +// gener->SetCutOnChild(1); +// gener->SetChildPtRange(0.1,30); +// gener->SetChildThetaRange(EtaToTheta(0.7),EtaToTheta(-0.7)); +// gener->SetChildPhiRange(80, 180.); +// gener->SetOrigin(0,0,0); //vertex position +// gener->SetSigma(0,0,5.3); //Sigma in (X,Y,Z) (cm) on IP position +// gener->SetForceDecay(kGammaEM); +// +// //gener->SetTrackingFlag(0); + +// AliGenCocktail *gener = new AliGenCocktail(); +// gener->SetProjectile("A", 208, 82); +// gener->SetTarget ("A", 208, 82); +// +// // 1 Pi0 in EMCAL, 2010 configuration, 4 SM +// AliGenParam *gEMCPi0 = GenParamCalo(1, AliGenPHOSlib::kPi0Flat, "EMCAL"); +// gener->AddGenerator(gEMCPi0,"pi0EMC", 1); +// +// // 1 Eta in EMCAL, 2010 configuration, 4 SM +// AliGenParam *gEMCEta = GenParamCalo(1, AliGenPHOSlib::kEtaFlat, "EMCAL"); +// gener->AddGenerator(gEMCEta,"etaEMC", 1); +// - if(iITS) { - + gener->Init(); + + // + // Activate this line if you want the vertex smearing to happen + // track by track + // + //gener->SetVertexSmear(perTrack); + // Field (L3 0.5 T) + TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG)); + + Int_t iABSO = 0; + Int_t iDIPO = 0; + Int_t iFMD = 0; + Int_t iFRAME = 0; + Int_t iHALL = 0; + Int_t iITS = 0; + Int_t iMAG = 0; + Int_t iMUON = 0; + Int_t iPHOS = 0; + Int_t iPIPE = 0; + Int_t iPMD = 0; + Int_t iHMPID = 0; + Int_t iSHIL = 0; + Int_t iT0 = 0; + Int_t iTOF = 0; + Int_t iTPC = 0; + Int_t iTRD = 0; + Int_t iZDC = 0; + Int_t iEMCAL = 1; + Int_t iACORDE= 0; + Int_t iVZERO = 0; + rl->CdGAFile(); + //=================== 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 ============================ + + AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame"); + } + + if (iSHIL) + { + //=================== SHIL parameters ============================ + + AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3"); + } + + + if (iPIPE) + { + //=================== PIPE parameters ============================ + + AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe"); + } + + if(iITS) { + //=================== ITS parameters ============================ - - AliITSvPPRasymmFMD *ITS = new AliITSvPPRasymmFMD("ITS","ITS PPR detailed version with asymmetric services"); - } - - if (iTPC) - { - //============================ TPC parameters =================== - AliTPC *TPC = new AliTPCv2("TPC", "Default"); - } - - - if (iTOF) { - //=================== TOF parameters ============================ - AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF"); - } - - - if (iHMPID) - { - //=================== HMPID parameters =========================== - AliHMPID *HMPID = new AliHMPIDv2("HMPID", "normal HMPID"); - - } - - - if (iZDC) - { - //=================== ZDC parameters ============================ - - AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC"); - } - - if (iTRD) - { - //=================== TRD parameters ============================ - - AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator"); + + AliITS *ITS = new AliITSv11("ITS","ITS v11"); + } + + if (iTPC) + { + //============================ TPC parameters =================== + AliTPC *TPC = new AliTPCv2("TPC", "Default"); + } + + + 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 = new AliZDCv3("ZDC", "normal ZDC"); + } + + if (iTRD) + { + //=================== TRD parameters ============================ + + AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator"); + AliTRDgeometry *geoTRD = TRD->GetGeometry(); + // starting at 3h in positive direction + if(year==2011 || year == 2010) + { // not sure if good for 2010 + // Partial geometry: modules at 0,1,7,8,9,10,11,15,16,17 + printf("*** TRD configuration for 2011\n"); + 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); } - - if (iFMD) + else if(year==2012) { - //=================== 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"); + printf("*** TRD configuration for 2012\n"); + geoTRD->SetSMstatus(4,0); + geoTRD->SetSMstatus(5,0); + geoTRD->SetSMstatus(12,0); + geoTRD->SetSMstatus(13,0); + geoTRD->SetSMstatus(14,0); } - //=================== PHOS parameters =========================== - - if (iPHOS) - { - AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP"); - } - - - 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 ============================ - - if(year == 2010) // d phi = 40 degrees - AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_FIRSTYEARV1"); - else if (year > 2010) // d phi = 100 degrees - AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETEV1"); - else // Old configuration with 110 degrees but not perfect geometry - AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETE"); - } - - if (iACORDE) - { - //=================== ACORDE parameters ============================ - AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); - } - - if (iVZERO) - { - //=================== ACORDE parameters ============================ - AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); - } - - AliLog::Message(AliLog::kInfo, "End of Config", "Config.C", "Config.C", "Config()"," Config.C", __LINE__); - + } + + 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"); + } + //=================== PHOS parameters =========================== + + if (iPHOS) + { + AliPHOS *PHOS = new AliPHOSv1("PHOS", "noCPV_Modules123"); + } + + + 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 ============================ + AliEMCAL *EMCAL = 0; + if (year == 2010) // d phi = 40 degrees + EMCAL = new AliEMCALv2("EMCAL", "EMCAL_FIRSTYEARV1", checkGeoAndRun); + else if (year == 2011) // d phi = 100 degrees + EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETEV1", checkGeoAndRun); + else if (year == 2012 || year == 2013) // d phi = 107 degrees + EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETE12SMV1", checkGeoAndRun); + else + EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETE12SMV1_DCAL_8SM", checkGeoAndRun); // EMCAL+DCAL dphi = 107 (EMCAL) + 33 (gap) + 67 (DCAL) + } + + if (iACORDE) + { + //=================== ACORDE parameters ============================ + AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); + } + + if (iVZERO) + { + //=================== ACORDE parameters ============================ + AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); + } + + AliLog::Message(AliLog::kInfo, "End of Config", "Config.C", "Config.C", "Config()"," Config.C", __LINE__); + } Float_t EtaToTheta(Float_t arg){ @@ -357,5 +418,47 @@ void LoadPythia() gSystem->Load("libEGPythia6.so"); // TGenerator interface gSystem->Load("libpythia6.so"); // Pythia gSystem->Load("libAliPythia6.so"); // ALICE specific - // implementations + // implementations +} + + +AliGenerator * GenParamCalo(Int_t nPart, Int_t type, TString calo) +{ + // nPart of type (Pi0, Eta, Pi0Flat, EtaFlat, ...) in EMCAL or PHOS + // CAREFUL EMCAL year 2010 configuration + AliGenParam *gener = new AliGenParam(nPart,new AliGenPHOSlib(),type,""); + + // meson cuts + gener->SetMomentumRange(0,999); + gener->SetYRange(-2,2); + gener->SetPtRange(1,30); + // photon cuts + gener->SetForceDecay(kGammaEM); // Ensure the decays are photons + gener->SetCutOnChild(1); + gener->SetChildPtRange(0.,30); + + if(calo=="EMCAL") + { + //meson acceptance + gener->SetPhiRange(80., 100.); // year 2010 + //gener->SetPhiRange(80., 180.); // year 2011 + gener->SetThetaRange(EtaToTheta(0.7),EtaToTheta(-0.7)); + //decay acceptance + gener->SetChildThetaRange(EtaToTheta(0.7),EtaToTheta(-0.7)); + gener->SetChildPhiRange(80., 100.); // year 2010 + //gener->SetChildPhiRange(80., 180.); // year 2011 + } + else if(calo=="PHOS") + { + //meson acceptance + gener->SetPhiRange(260., 320.); + gener->SetThetaRange(EtaToTheta(0.13),EtaToTheta(-0.13)); + //decay acceptance + gener->SetChildThetaRange(EtaToTheta(0.13),EtaToTheta(-0.13)); + gener->SetChildPhiRange(260., 320.); + } + + return gener; + } +