From: hristov Date: Tue, 29 Apr 2008 13:51:31 +0000 (+0000) Subject: Test for the first physics production X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=28b752558286a7eb404dc69d7e7754ecdaa64558;hp=7ff8385dc8092955ebd9c48a168874ca275512ce;ds=sidebyside Test for the first physics production --- diff --git a/test/fpprod/Config.C b/test/fpprod/Config.C new file mode 100644 index 00000000000..ec4d2829215 --- /dev/null +++ b/test/fpprod/Config.C @@ -0,0 +1,504 @@ +// +// Configuration for the first physics production 2008 +// + +// One can use the configuration macro in compiled mode by +// root [0] gSystem->Load("libgeant321"); +// root [0] gSystem->SetIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include\ +// -I$ALICE_ROOT -I$ALICE/geant3/TGeant3"); +// root [0] .x grun.C(1,"Config.C++") + +#if !defined(__CINT__) || defined(__MAKECINT__) +#include +#include +#include +#include +#include +#include +#include "STEER/AliRunLoader.h" +#include "STEER/AliRun.h" +#include "STEER/AliConfig.h" +#include "PYTHIA6/AliDecayerPythia.h" +#include "PYTHIA6/AliGenPythia.h" +#include "TDPMjet/AliGenDPMjet.h" +#include "STEER/AliMagWrapCheb.h" +#include "STRUCT/AliBODY.h" +#include "STRUCT/AliMAG.h" +#include "STRUCT/AliABSOv3.h" +#include "STRUCT/AliDIPOv3.h" +#include "STRUCT/AliHALLv3.h" +#include "STRUCT/AliFRAMEv2.h" +#include "STRUCT/AliSHILv3.h" +#include "STRUCT/AliPIPEv3.h" +#include "ITS/AliITSv11Hybrid.h" +#include "TPC/AliTPCv2.h" +#include "TOF/AliTOFv6T0.h" +#include "HMPID/AliHMPIDv3.h" +#include "ZDC/AliZDCv3.h" +#include "TRD/AliTRDv1.h" +#include "TRD/AliTRDgeometry.h" +#include "FMD/AliFMDv1.h" +#include "MUON/AliMUONv1.h" +#include "PHOS/AliPHOSv1.h" +#include "PMD/AliPMDv1.h" +#include "T0/AliT0v1.h" +#include "EMCAL/AliEMCALv2.h" +#include "ACORDE/AliACORDEv1.h" +#include "VZERO/AliVZEROv7.h" +#endif + + +enum PDC06Proc_t +{ + kPythia6, kPhojet, kRunMax +}; + +const char * pprRunName[] = { + "kPythia6", "kPhojet" +}; + +//--- Magnetic Field --- +enum Mag_t +{ + kNoField, k5kG, kFieldMax +}; + +const char * pprField[] = { + "kNoField", "k5kG" +}; + +//--- Functions --- +class AliGenPythia; +AliGenerator *MbPythia(); +AliGenerator *MbPhojet(); +void ProcessEnvironmentVars(); + +// Geterator, field, beam energy +static PDC06Proc_t proc = kPhojet; +static Mag_t mag = k5kG; +static Float_t energy = 10000; // energy in CMS +//========================// +// Set Random Number seed // +//========================// +TDatime dt; +static UInt_t seed = dt.Get(); + +// Comment line +static TString comment; + +void Config() +{ + + + // Get settings from environment variables + ProcessEnvironmentVars(); + + gRandom->SetSeed(seed); + cerr<<"Seed for random number generation= "<Load("liblhapdf"); // Parton density functions + gSystem->Load("libEGPythia6"); // TGenerator interface + gSystem->Load("libpythia6"); // Pythia + gSystem->Load("libAliPythia6"); // ALICE specific implementations + gSystem->Load("libgeant321"); +#endif + + new TGeant3TGeo("C++ Interface to Geant3"); + + //======================================================================= + // Create the output file + + + AliRunLoader* rl=0x0; + + cout<<"Config.C: Creating Run Loader ..."<Fatal("Config.C","Can not instatiate the Run Loader"); + return; + } + rl->SetCompressionLevel(2); + rl->SetNumberOfEventsPerFile(1000); + gAlice->SetRunLoader(rl); + // gAlice->SetGeometryFromFile("geometry.root"); + // gAlice->SetGeometryFromCDB(); + + // Set the trigger configuration: proton-proton + gAlice->SetTriggerDescriptor("p-p"); + + // + //======================================================================= + // ************* 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); + + + + + //======================// + // Set External decayer // + //======================// + TVirtualMCDecayer* decayer = new AliDecayerPythia(); + decayer->SetForceDecay(kAll); + decayer->Init(); + gMC->SetExternalDecayer(decayer); + + //=========================// + // Generator Configuration // + //=========================// + AliGenerator* gener = 0x0; + + if (proc == kPythia6) { + gener = MbPythia(); + } else if (proc == kPhojet) { + gener = MbPhojet(); + } + + + + // PRIMARY VERTEX + // + gener->SetOrigin(0., 0., 0.); // vertex position + // + // + // Size of the interaction diamond + // Longitudinal + Float_t sigmaz = 7.55 / TMath::Sqrt(2.); // [cm] + // + // Transverse + Float_t betast = 10; // beta* [m] + Float_t eps = 3.75e-6; // emittance [m] + Float_t gamma = energy / 2.0 / 0.938272; // relativistic gamma [1] + Float_t sigmaxy = TMath::Sqrt(eps * betast / gamma) / TMath::Sqrt(2.) * 100.; // [cm] + printf("\n \n Diamond size x-y: %10.3e z: %10.3e\n \n", sigmaxy, sigmaz); + + gener->SetSigma(sigmaxy, sigmaxy, sigmaz); // Sigma in (X,Y,Z) (cm) on IP position + gener->SetCutVertexZ(3.); // Truncate at 3 sigma + gener->SetVertexSmear(kPerEvent); + + gener->Init(); + + // FIELD + // + AliMagWrapCheb* field = 0x0; + if (mag == kNoField) { + comment = comment.Append(" | L3 field 0.0 T"); + field = new AliMagWrapCheb("Maps","Maps", 2, 0., 10., AliMagWrapCheb::k2kG); + } else if (mag == k5kG) { + comment = comment.Append(" | L3 field 0.5 T"); + field = new AliMagWrapCheb("Maps","Maps", 2, 1., 10., AliMagWrapCheb::k5kG); + } + printf("\n \n Comment: %s \n \n", comment.Data()); + + rl->CdGAFile(); + gAlice->SetField(field); + + + + Int_t iABSO = 1; + Int_t iACORDE= 0; + Int_t iDIPO = 1; + Int_t iEMCAL = 0; + Int_t iFMD = 1; + 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 = 0; + Int_t iHMPID = 1; + Int_t iSHIL = 1; + Int_t iT0 = 1; + Int_t iTOF = 1; + Int_t iTPC = 1; + Int_t iTRD = 1; + Int_t iVZERO = 1; + Int_t iZDC = 1; + + + //=================== 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"); + FRAME->SetHoles(1); + } + + 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 ============================ + + AliITS *ITS = new AliITSv11Hybrid("ITS","ITS v11Hybrid"); + } + + 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(); + // Partial geometry: modules at 0,8,9,17 + // starting at 3h in positive direction + geoTRD->SetSMstatus(1,0); + geoTRD->SetSMstatus(2,0); + geoTRD->SetSMstatus(3,0); + geoTRD->SetSMstatus(4,0); + geoTRD->SetSMstatus(5,0); + geoTRD->SetSMstatus(6,0); + geoTRD->SetSMstatus(7,0); + geoTRD->SetSMstatus(10,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); + } + + 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"); + } + + if (iPHOS) + { + //=================== PHOS parameters =========================== + + 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 ============================ + + AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "SHISH_77_TRD1_2X2_FINAL_110DEG"); + } + + if (iACORDE) + { + //=================== ACORDE parameters ============================ + + AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); + } + + if (iVZERO) + { + //=================== ACORDE parameters ============================ + + AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); + } +} +// +// PYTHIA +// + +AliGenerator* MbPythia() +{ + comment = comment.Append(" pp at 14 TeV: Pythia low-pt"); +// +// Pythia + AliGenPythia* pythia = new AliGenPythia(-1); + pythia->SetMomentumRange(0, 999999.); + pythia->SetThetaRange(0., 180.); + pythia->SetYRange(-12.,12.); + pythia->SetPtRange(0,1000.); + pythia->SetProcess(kPyMb); + pythia->SetEnergyCMS(energy); + + return pythia; +} + +AliGenerator* MbPhojet() +{ + comment = comment.Append(" pp at 14 TeV: Pythia low-pt"); +// +// DPMJET +#if defined(__CINT__) + gSystem->Load("libdpmjet"); // Parton density functions + gSystem->Load("libTDPMjet"); // Parton density functions +#endif + AliGenDPMjet* dpmjet = new AliGenDPMjet(-1); + dpmjet->SetMomentumRange(0, 999999.); + dpmjet->SetThetaRange(0., 180.); + dpmjet->SetYRange(-12.,12.); + dpmjet->SetPtRange(0,1000.); + dpmjet->SetProcess(kDpmMb); + dpmjet->SetEnergyCMS(energy); + + return dpmjet; +} + +void ProcessEnvironmentVars() +{ + // Run type + if (gSystem->Getenv("CONFIG_RUN_TYPE")) { + for (Int_t iRun = 0; iRun < kRunMax; iRun++) { + if (strcmp(gSystem->Getenv("CONFIG_RUN_TYPE"), pprRunName[iRun])==0) { + proc = (PDC06Proc_t)iRun; + cout<<"Run type set to "<Getenv("CONFIG_FIELD")) { + for (Int_t iField = 0; iField < kFieldMax; iField++) { + if (strcmp(gSystem->Getenv("CONFIG_FIELD"), pprField[iField])==0) { + mag = (Mag_t)iField; + cout<<"Field set to "<Getenv("CONFIG_ENERGY")) { + energy = atoi(gSystem->Getenv("CONFIG_ENERGY")); + } + + // Random Number seed + if (gSystem->Getenv("CONFIG_SEED")) { + seed = atoi(gSystem->Getenv("CONFIG_SEED")); + } +} diff --git a/test/fpprod/README b/test/fpprod/README new file mode 100644 index 00000000000..b98effdaca3 --- /dev/null +++ b/test/fpprod/README @@ -0,0 +1,68 @@ +Productions for the first physics studies (25/04/2008): +Each run contains 300000 events, 200000 for calculation of the correction maps, 100000 used as "real" data + +Configurations: +------------- +10 TeV: +- field 0T + - Pythia: min. bias ATLAS tuning. + - Phojet: default parameters fo min. bias simulation. +- field 0.5T + - Pythia + - Phojet + + + +900 GeV: +- field 0T + - Pythia: ATLAS or default tuning (to be investigated) +- field 0.5T + +Beam parameters: +- energy: 900 GeV, 10 TeV +- beta* 10m + +Field: +- new measured field + +Detectors: +- ITS: v11Hybrid +- TPC +- TRD: modules 0,8,9,17 (around 3h and 9h). Enumerated from X in positive direction + - Pythia +- TOF: full +- HMPID +- PHOS: one module/all modules -> no possibility for one module, to be implemented. +- EMCAL: no EMCAL +- MUON +- T0 +- VZERO +- FMD +- PMD: 6 out of 26 modules -> switch off in the first run +- ZDC +- ACORDE + +Simulation/reconstruction +------------------------- + +Mis-alignment: +- full misalignment in the simulation, ideal in the reconstruction + +Mis-calibration: +- full or residual: they are very similar, however do as above. + +What do we produce in the reconstruction? +- ESD +- ESD friends +- AODs from the analysis train + +Which files do we keep? +- galice.root +- geometry.root +- Kinematics.root +- TrackReferences.root +- Rec. points for visualization +- AliESDs.root +- AliESDfriends.root +- tags +- RAW data diff --git a/test/fpprod/aod.C b/test/fpprod/aod.C new file mode 100644 index 00000000000..b52e0f64fa1 --- /dev/null +++ b/test/fpprod/aod.C @@ -0,0 +1,6 @@ +void aod(){ + + gSystem->Load("libdpmjet"); + gSystem->Load("libTDPMjet"); + gROOT->Macro("$ALICE_ROOT/STEER/CreateAODfromESD.C"); +} diff --git a/test/fpprod/check.C b/test/fpprod/check.C new file mode 100644 index 00000000000..cdfcd17df78 --- /dev/null +++ b/test/fpprod/check.C @@ -0,0 +1,6 @@ +void check(){ + + gSystem->Load("libdpmjet"); + gSystem->Load("libTDPMjet"); + gROOT->Macro("$ALICE_ROOT/STEER/CheckESD.C"); +} diff --git a/test/fpprod/rec.C b/test/fpprod/rec.C new file mode 100644 index 00000000000..f01029f9802 --- /dev/null +++ b/test/fpprod/rec.C @@ -0,0 +1,16 @@ +void rec() { + AliReconstruction reco; + reco.SetUniformFieldTracking(kFALSE); + reco.SetWriteESDfriend(); + reco.SetWriteAlignmentData(); + AliTPCRecoParam * tpcRecoParam = AliTPCRecoParam::GetLowFluxParam(); + AliTPCReconstructor::SetRecoParam(tpcRecoParam); + AliTPCReconstructor::SetStreamLevel(1); + // reco.SetInput("raw.root"); + reco.SetRunReconstruction("ITS TPC TRD TOF HMPID PHOS EMCAL MUON VZERO T0 FMD PMD ZDC"); + TStopwatch timer; + timer.Start(); + reco.Run(); + timer.Stop(); + timer.Print(); +} diff --git a/test/fpprod/runtest.sh b/test/fpprod/runtest.sh new file mode 100755 index 00000000000..3c0bd22a73d --- /dev/null +++ b/test/fpprod/runtest.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +rm -rf *.root *.dat *.log fort* hlt hough raw* *.inp *.o +aliroot -b -q sim.C 2>&1 | tee sim.log +mv syswatch.log simwatch.log +aliroot -b -q rec.C 2>&1 | tee rec.log +mv syswatch.log recwatch.log +aliroot -b -q check.C 2>&1 | tee check.log +aliroot -b -q aod.C 2>&1 | tee aod.log + + + + diff --git a/test/fpprod/sim.C b/test/fpprod/sim.C new file mode 100644 index 00000000000..2ac6949a881 --- /dev/null +++ b/test/fpprod/sim.C @@ -0,0 +1,15 @@ +void sim(Int_t nev=20) { + + AliSimulation simulator; + simulator.SetMakeSDigits("TRD TOF PHOS HMPID EMCAL MUON FMD ZDC PMD T0 VZERO"); + simulator.SetMakeDigitsFromHits("ITS TPC"); + simulator.SetWriteRawData("ALL","raw.root",kTRUE); + simulator.SetRunHLT(""); + simulator.SetQA(kFALSE); + + TStopwatch timer; + timer.Start(); + simulator.Run(nev); + timer.Stop(); + timer.Print(); +}