From 33924ff1952ab2adc1ba7a7dab640e916fff38c2 Mon Sep 17 00:00:00 2001 From: Cornelius Feier-Riesen <cornelius.riesen@physik.uni-giessen.de> Date: Wed, 25 Nov 2020 20:42:37 +0100 Subject: [PATCH] Update lmvm --- .../dielectron/lmvm/CbmAnaDielectronTask.cxx | 68 +++++++++++++++- .../dielectron/lmvm/CbmAnaDielectronTask.h | 7 ++ .../lmvm/CbmAnaDielectronTaskDraw.cxx | 26 ++++-- .../lmvm/CbmAnaDielectronTaskDraw.h | 3 + .../lmvm/CbmAnaDielectronTaskDrawAll.cxx | 6 +- macro/analysis/dielectron/batch_job.py | 60 ++++++++------ macro/analysis/dielectron/batch_send.py | 81 +++++++++++-------- macro/analysis/dielectron/draw_all.py | 32 ++++++++ macro/analysis/dielectron/draw_analysis.C | 34 +++----- macro/analysis/dielectron/draw_analysis_all.C | 42 ++++------ macro/analysis/dielectron/draw_litqa.C | 31 +++---- macro/analysis/dielectron/draw_many.py | 76 +++++++++++++++++ macro/analysis/dielectron/draw_separate.py | 17 ++++ macro/analysis/dielectron/hadd_many.py | 24 ++++++ macro/analysis/dielectron/run_analysis.C | 30 +++---- macro/analysis/dielectron/run_digi.C | 15 ++-- macro/analysis/dielectron/run_litqa.C | 60 ++++++-------- macro/analysis/dielectron/run_reco.C | 41 +++++----- macro/analysis/dielectron/run_sim.C | 13 ++- .../cbm/elid/CbmLitGlobalElectronId.cxx | 6 +- 20 files changed, 449 insertions(+), 223 deletions(-) create mode 100644 macro/analysis/dielectron/draw_all.py create mode 100755 macro/analysis/dielectron/draw_many.py create mode 100644 macro/analysis/dielectron/draw_separate.py create mode 100755 macro/analysis/dielectron/hadd_many.py diff --git a/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTask.cxx b/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTask.cxx index bf16aa667a..a52b542516 100644 --- a/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTask.cxx +++ b/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTask.cxx @@ -294,7 +294,9 @@ CbmAnaDielectronTask::CbmAnaDielectronTask() , fh_piprim_plus_rapidity_mc(NULL) , fh_piprim_minus_rapidity_mc(NULL) , fh_pi0prim_rapidity_mc(NULL) - , fh_etaprim_rapidity_mc(NULL) { + , fh_etaprim_rapidity_mc(NULL) + , fh_mom_likelihood_El(NULL) + , fh_mom_likelihood_Pi(NULL) { // weight for rho0 = 0.001081; omega_ee = 0.0026866; omega_dalitz = 0.02242; phi = 0.00039552; pi0 = 4.38 ------ Au + Au, for 25 GeV central collision fWeight = 0.0; fUseRich = true; @@ -306,8 +308,10 @@ CbmAnaDielectronTask::CbmAnaDielectronTask() fCuts.SetDefaultCuts(); } + CbmAnaDielectronTask::~CbmAnaDielectronTask() {} + void CbmAnaDielectronTask::InitHists() { fHistoList.clear(); @@ -1016,6 +1020,29 @@ void CbmAnaDielectronTask::InitHists() { -0.5, 2.5); fHistoList.push_back(fh_nof_rec_pi0); + + //Occurency vs Likelihood and Momentum + fh_mom_likelihood_El = + new TH2D("fh_mom_likelihood_El", + "fh_mom_likelihood_El;p [GeV/c]; likelihood electron; counter", + 100, + 0., + 6., + 100, + 0., + 1.); + fh_mom_likelihood_Pi = + new TH2D("fh_mom_likelihood_Pi", + "fh_mom_likelihood_Pi;p [GeV/c]; likelihood pion; counter", + 100, + 0., + 6., + 100, + 0., + 1.); + + fHistoList.push_back(fh_mom_likelihood_El); + fHistoList.push_back(fh_mom_likelihood_Pi); } InitStatus CbmAnaDielectronTask::Init() { @@ -1193,9 +1220,46 @@ void CbmAnaDielectronTask::Exec(Option_t*) { SignalAndBgReco(); FillElPiMomHist(); FillNofChargedParticlesPerEvent(); + FillMomLikeHist(); } } // Exec +void CbmAnaDielectronTask::FillMomLikeHist() { + Int_t ngTracks = fGlobalTracks->GetEntriesFast(); + + for (int i = 0; i < ngTracks; i++) { + + CbmGlobalTrack* gTrack = (CbmGlobalTrack*) fGlobalTracks->At(i); + if (NULL == gTrack) continue; + + // getting TRD index and likelihood value + int trdInd = gTrack->GetTrdTrackIndex(); + if (trdInd < 0) continue; + CbmTrdTrack* trdTrack = (CbmTrdTrack*) fTrdTracks->At(trdInd); + if (NULL == trdTrack) continue; + double_t likelihoodEl = trdTrack->GetPidLikeEL(); + double_t likelihoodPi = trdTrack->GetPidLikePI(); + + // getting momentum via matching STS track with corresponding MC track + int stsInd = gTrack->GetStsTrackIndex(); + if (stsInd < 0) continue; + CbmStsTrack* stsTrack = (CbmStsTrack*) fStsTracks->At(stsInd); + if (stsTrack == NULL) continue; + CbmTrackMatchNew* stsMatch = + (CbmTrackMatchNew*) fStsTrackMatches->At(stsInd); + if (stsMatch == NULL) continue; + if (stsMatch->GetNofLinks() == 0) continue; // what is this for? + int stsMcTrackId = stsMatch->GetMatchedLink().GetIndex(); + if (stsMcTrackId < 0) continue; + CbmMCTrack* mcTrack1 = (CbmMCTrack*) fMCTracks->At(stsMcTrackId); + if (mcTrack1 == NULL) continue; + double momentum = mcTrack1->GetP(); // momentum of MC track + + fh_mom_likelihood_El->Fill(momentum, likelihoodEl); + fh_mom_likelihood_Pi->Fill(momentum, likelihoodPi); + } +} + void CbmAnaDielectronTask::FillRichRingNofHits() { fNofHitsInRingMap.clear(); Int_t nofRichHits = fRichHits->GetEntriesFast(); @@ -1342,7 +1406,7 @@ void CbmAnaDielectronTask::FillNofChargedParticlesPerEvent() { for (Int_t i = 0; i < nofMcTracks; i++) { CbmMCTrack* mcTrack = (CbmMCTrack*) fMCTracks->At(i); Bool_t isMcTrackCharged = false; - if (mcTrack->GetCharge() != 0) isMcTrackCharged = true; + //if (mcTrack->GetCharge() != 0) isMcTrackCharged = true; // FIXME: TODO: uncomment when bug is fixed; issue https://lxcbmredmine01.gsi.de/issues/1826; Bool_t isMcSignalElectron = CbmLmvmUtils::IsMcSignalElectron(mcTrack); Bool_t isMcTrackAccepted = false; if (mcTrack->GetNPoints(ECbmModuleId::kSts) >= 4) isMcTrackAccepted = true; diff --git a/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTask.h b/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTask.h index d9e7bbe450..5ab4f02e82 100644 --- a/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTask.h +++ b/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTask.h @@ -239,6 +239,9 @@ public: void MvdCutMcDistance(); + // Likelihood vs Momentum + void FillMomLikeHist(); + virtual void Finish(); void FillElPiMomHist(); @@ -470,6 +473,10 @@ private: TH1D* fh_pi0prim_rapidity_mc; TH1D* fh_etaprim_rapidity_mc; + // Likelihood vs Momentum + TH2D* fh_mom_likelihood_El; + TH2D* fh_mom_likelihood_Pi; + public: void SetUseMvd(Bool_t use) { fUseMvd = use; }; void SetUseRich(Bool_t use) { fUseRich = use; }; diff --git a/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTaskDraw.cxx b/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTaskDraw.cxx index 1975acaa2f..0b341d3d50 100644 --- a/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTaskDraw.cxx +++ b/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTaskDraw.cxx @@ -62,8 +62,8 @@ void CbmAnaDielectronTaskDraw::DrawHistFromFile(const string& fileName, fHM = new CbmHistManager(); TFile* file = new TFile(fileName.c_str()); fHM->ReadFromFile(file); - fNofEvents = (Int_t) H1("fh_event_number")->GetEntries(); + //fNofEvents = 10000; cout << "File name = " << fileName << endl; cout << "Number of events = " << fNofEvents << endl; @@ -92,10 +92,21 @@ void CbmAnaDielectronTaskDraw::DrawHistFromFile(const string& fileName, DrawMvdAndStsHist(); DrawElPiMomHis(); DrawPmtXY(); - + DrawMomLikeHist(); SaveCanvasToImage(); } +void CbmAnaDielectronTaskDraw::DrawMomLikeHist() { + TCanvas* c = + fHM->CreateCanvas("lmvm_mom_likelihood", "lmvm_mom_likelihood", 1000, 500); + + c->Divide(2, 1); + c->cd(1); + DrawH2(H2("fh_mom_likelihood_El")); + c->cd(2); + DrawH2(H2("fh_mom_likelihood_Pi")); +} + void CbmAnaDielectronTaskDraw::RebinMinvHist() { int nRebin = 10; for (int i = 0; i < CbmLmvmHist::fNofAnaSteps; i++) { @@ -462,11 +473,12 @@ void CbmAnaDielectronTaskDraw::Draw1DCut(const string& hName, } void CbmAnaDielectronTaskDraw::DrawCutDistributions() { - Draw1DCut("fh_richann", - "left", - CbmLitGlobalElectronId::GetInstance().GetRichAnnCut()); - Draw1DCut( - "fh_trdann", "left", CbmLitGlobalElectronId::GetInstance().GetTrdAnnCut()); + //Draw1DCut("fh_richann", "left", CbmLitGlobalElectronId::GetInstance().GetRichAnnCut()); + //Draw1DCut("fh_trdann", "left", CbmLitGlobalElectronId::GetInstance().GetTrdAnnCut()); + + Draw1DCut("fh_richann", "left", -0.4); + Draw1DCut("fh_trdann", "left", 0.85); + Draw2DCut("fh_tofm2"); Draw1DCut("fh_chi2prim", "right", fCuts.fChiPrimCut); diff --git a/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTaskDraw.h b/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTaskDraw.h index 79b7281fe6..7a3efb1425 100644 --- a/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTaskDraw.h +++ b/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTaskDraw.h @@ -249,6 +249,9 @@ private: void DrawPmtXY(); + // Draw Likelihood vs Momentum + void DrawMomLikeHist(); + CbmAnaDielectronTaskDraw(const CbmAnaDielectronTaskDraw&); CbmAnaDielectronTaskDraw& operator=(const CbmAnaDielectronTaskDraw&); diff --git a/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTaskDrawAll.cxx b/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTaskDrawAll.cxx index 9d7ae806d0..aad49e2288 100644 --- a/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTaskDrawAll.cxx +++ b/analysis/PWGDIL/dielectron/lmvm/CbmAnaDielectronTaskDrawAll.cxx @@ -461,9 +461,8 @@ void CbmAnaDielectronTaskDrawAll::DrawMinvPt(CbmLmvmAnalysisSteps step) { TH2D* sPhi = (TH2D*) H2(kPhi, "fh_signal_minv_pt_" + CbmLmvmHist::fAnaSteps[step]) ->Clone(); - TH2D* sEta = fh_mean_eta_minv_pt[step]; - TH2D* sPi0 = fh_mean_pi0_minv_pt[step]; - + TH2D* sEta = fh_mean_eta_minv_pt[step]; + TH2D* sPi0 = fh_mean_pi0_minv_pt[step]; TH2D* coctail = (TH2D*) sInmed->Clone(); if (fDrawQgp) coctail->Add(sQgp); coctail->Add(sOmega); @@ -471,7 +470,6 @@ void CbmAnaDielectronTaskDrawAll::DrawMinvPt(CbmLmvmAnalysisSteps step) { coctail->Add(sOmegaDalitz); coctail->Add(sEta); coctail->Add(sPi0); - DrawH2(coctail); } diff --git a/macro/analysis/dielectron/batch_job.py b/macro/analysis/dielectron/batch_job.py index d97491a49d..1630a920a3 100755 --- a/macro/analysis/dielectron/batch_job.py +++ b/macro/analysis/dielectron/batch_job.py @@ -1,20 +1,23 @@ #!/usr/bin/env python3 -import os -import sys -import shutil +import os # operating system interfaces +import sys # provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter +import shutil # offers a number of high-level operations on files and collections of files def main(): dataDir = sys.argv[1] geoSetup = sys.argv[2] plutoParticle = sys.argv[3] - cbmrootConfigPath = "/lustre/nyx/cbm/users/slebedev/cbm/trunk/build/config.sh" - macroDir = "/lustre/nyx/cbm/users/slebedev/cbm/trunk/cbmroot/macro/analysis/dielectron/" + cbmrootConfigPath = "/lustre/nyx/cbm/users/criesen/build/config.sh" + macroDir = "/lustre/nyx/cbm/users/criesen/cbmroot/macro/analysis/dielectron/" nofEvents = 1000 + taskId = os.environ.get('SLURM_ARRAY_TASK_ID') - jobId = os.environ.get('SLURM_ARRAY_JOB_ID') + jobId = os.environ.get('SLURM_ARRAY_JOB_ID') + colEnergy = "8gev" + colSystem = "auau" print("dataDir:" + dataDir) os.system(("source {}").format(cbmrootConfigPath)) @@ -22,12 +25,15 @@ def main(): workDir = dataDir + "/workdir/" + jobId + "_" + taskId + "/" if os.path.exists(workDir): shutil.rmtree(workDir) - os.makedirs(workDir) - os.chdir(workDir) + os.makedirs(workDir) + os.chdir(workDir) - plutoFile = getPlutoPath("auau", "8gev", plutoParticle, taskId) - urqmdFile = "/lustre/nyx/cbm/prod/gen/urqmd/auau/8gev/centr/urqmd.auau.8gev.centr.00001.root" - plutoFile = "/lustre/nyx/cbm/prod/gen/pluto/erik/cktA/8gev/omega/epem/pluto.auau.8gev.omega.epem.0001.root" + plutoFile = getPlutoPath(colSystem, colEnergy, plutoParticle, taskId) + #plutoFile = getPlutoPath("auau", "8gev", plutoParticle, taskId) + + urqmdFile = "/lustre/nyx/cbm/prod/gen/urqmd/auau/"+colEnergy+"/centr/urqmd.auau.8gev.centr." + str(taskId).zfill(5) + ".root" + #urqmdFile = "/lustre/nyx/cbm/prod/gen/urqmd/auau/8gev/centr/urqmd.auau.8gev.centr.00001.root" + mcFile = dataDir + "/mc." + taskId + ".root" parFile = dataDir + "/param." + taskId + ".root" digiFile = dataDir + "/digi." + taskId + ".root" @@ -35,31 +41,33 @@ def main(): litQaFile = dataDir + "/litqa." + taskId + ".root" analysisFile = dataDir + "/analysis." + taskId + ".root" geoSimFile = dataDir + "/geosim." + taskId + ".root" - os.system(('root -l -b -q {}/run/run_sim.C\(\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",{},{},\\"{}\\",\\"{}\\",{}\)').format( - macroDir, urqmdFile, mcFile, parFile, geoSimFile, nofElectrons, nofPositrons, plutoFile, geoSetup, nofEvents)) - os.system(('root -l -b -q {}/run/run_digi.C\(\\"{}\\",\\"{}\\",\\"{}\\",{}\)').format( + os.system(('root -l -b -q {}/run_sim.C\(\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",{}\)').format( + macroDir, urqmdFile, plutoFile, mcFile, parFile, geoSimFile, geoSetup, nofEvents)) + os.system(('root -l -b -q {}/run_digi.C\(\\"{}\\",\\"{}\\",\\"{}\\",{}\)').format( macroDir, mcFile, parFile, digiFile, nofEvents)) - os.system(('root -l -b -q {}/run/run_reco.C\(\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",{}\)').format( - macroDir, mcFile, parFile, digiFile, recoFile, geoSetup, resultDir, nofEvents)) - os.system(('root -l -b -q {}/run/run_qa.C\(\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",{}\)').format( - macroDir, mcFile, parFile, digiFile, recoFile, qaFile, geoSetup, resultDir, nofEvents)) + os.system(('root -l -b -q {}/run_reco.C\(\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",{}\)').format( + macroDir, mcFile, parFile, digiFile, recoFile, geoSetup, nofEvents)) + os.system(('root -l -b -q {}/run_litqa.C\(\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",{}\)').format( + macroDir, mcFile, parFile, digiFile, recoFile, litQaFile, geoSetup, nofEvents)) + os.system(('root -l -b -q {}/run_analysis.C\(\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",{}\)').format( + macroDir, mcFile, parFile, digiFile, recoFile, analysisFile, plutoParticle, colSystem, colEnergy, geoSetup, nofEvents)) -def getPlutoPath(colSystem, colEnergy, plutoParticle, index): +def getPlutoPath(colSystem, colEnergy, plutoParticle, taskId): if plutoParticle == "rho0": - return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/${collEnergy}/rho0/epem/pluto.auau.${collEnergy}.rho0.epem.${XXXX}.root" + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/"+colEnergy+"/rho0/epem/pluto.auau."+colEnergy+".rho0.epem." + str(taskId).zfill(4) + ".root" elif plutoParticle == "omegaepem": - return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/${collEnergy}/omega/epem/pluto.auau.${collEnergy}.omega.epem.${XXXX}.root" + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/"+colEnergy+"/omega/epem/pluto.auau."+colEnergy+".omega.epem." + str(taskId).zfill(4) + ".root" elif plutoParticle == "omegadalitz": - return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/${collEnergy}/omega/pi0epem/pluto.auau.${collEnergy}.omega.pi0epem.${XXXX}.root" + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/"+colEnergy+"/omega/pi0epem/pluto.auau."+colEnergy+".omega.pi0epem." + str(taskId).zfill(4) + ".root" elif plutoParticle == "phi": - return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/${collEnergy}/phi/epem/pluto.auau.${collEnergy}.phi.epem.${XXXX}.root" + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/"+colEnergy+"/phi/epem/pluto.auau."+colEnergy+".phi.epem." + str(taskId).zfill(4) + ".root" elif plutoParticle == "pi0": - return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/${collEnergy}/pi0/gepem/pluto.auau.${collEnergy}.pi0.gepem.${XXXX}.root" + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/"+colEnergy+"/pi0/gepem/pluto.auau."+colEnergy+".pi0.gepem." + str(taskId).zfill(4) + ".root" elif plutoParticle == "inmed": - return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktRapp/${collEnergy}/rapp.inmed/epem/pluto.auau.${collEnergy}.rapp.inmed.epem.${XXXX}.root" + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktRapp/"+colEnergy+"/rapp.inmed/epem/pluto.auau."+colEnergy+".rapp.inmed.epem." + str(taskId).zfill(4) + ".root" elif plutoParticle == "qgp": - return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktRapp/${collEnergy}/rapp.qgp/epem/pluto.auau.${collEnergy}.rapp.qgp.epem.${XXXX}.root" + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktRapp/"+colEnergy+"/rapp.qgp/epem/pluto.auau."+colEnergy+".rapp.qgp.epem." + str(taskId).zfill(4) + ".root" elif plutoParticle == "urqmd": return "" diff --git a/macro/analysis/dielectron/batch_send.py b/macro/analysis/dielectron/batch_send.py index 3f8f6394e8..d7686adf08 100755 --- a/macro/analysis/dielectron/batch_send.py +++ b/macro/analysis/dielectron/batch_send.py @@ -3,35 +3,52 @@ import os import shutil -nofJobs = 648 -timeLimit="08:00:00" -mirrorRotation=15 -#All data in data dir will be removed -removeData = False -dataDir = "/lustre/nyx/cbm/users/slebedev/cbm/data/geoopt_m" + str(mirrorRotation) + "/" -logFile = dataDir + "/log/log_slurm-%A_%a.out" -errorFile = dataDir + "/error/error_slurm-%A_%a.out" -jobName = "RICH" + str(mirrorRotation) - -if removeData: - print("All data in dataDir will be removed. Dir:" + dataDir) - print("Removing...") - if os.path.exists(dataDir): - shutil.rmtree(dataDir) - os.makedirs(dataDir) - -if os.path.exists(os.path.dirname(logFile)): - shutil.rmtree(os.path.dirname(logFile)) -os.makedirs(os.path.dirname(logFile)) - -if os.path.exists(os.path.dirname(errorFile)): - shutil.rmtree(os.path.dirname(errorFile)) -os.makedirs(os.path.dirname(errorFile)) - -#-p debug -commandStr=('sbatch --job-name={} --time={} --output={} --error={} --array=1-{} batch_job.py {} {}').format(jobName, timeLimit, logFile, errorFile, nofJobs, dataDir, mirrorRotation) - - -#print(commandStr) -os.system(commandStr) - +def main(): + nofJobs = 10 + timeLimit="08:00:00" + geoSetup="sis100_electron" + plutoParticles = ["inmed", "omegadalitz", "phi", "omegaepem", "qgp"]; + + #ADDED + mirrorRotation=15 + dataDir = "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/" + jobName = "RICH" + str(mirrorRotation) + + #All data in data dir will be removed + removeData = False + #jobName = "LMVM" + if removeData: + print("All data in dataDir will be removed. Dir:" + dataDir) + print("Removing...") + if os.path.exists(dataDir): + shutil.rmtree(dataDir) + os.makedirs(dataDir,exist_ok=True) + + for plutoParticle in plutoParticles: + dataDirPluto = dataDir + plutoParticle + logFile = dataDirPluto + "/log/log_slurm-%A_%a.out" + errorFile = dataDirPluto + "/error/error_slurm-%A_%a.out" + workDir = dataDirPluto + "/workdir/" + makeLogErrorDirs(logFile, errorFile, workDir) + + #-p debug + commandStr=('sbatch --job-name={} --time={} --output={} --error={} --array=1-{} batch_job.py {} {} {}').format(jobName, timeLimit, logFile, errorFile, nofJobs, dataDirPluto, geoSetup, plutoParticle) + + os.system(commandStr) + + +def makeLogErrorDirs(logFile, errorFile, workDir): + if os.path.exists(os.path.dirname(logFile)): + shutil.rmtree(os.path.dirname(logFile)) + os.makedirs(os.path.dirname(logFile),exist_ok=True) + + if os.path.exists(os.path.dirname(errorFile)): + shutil.rmtree(os.path.dirname(errorFile)) + os.makedirs(os.path.dirname(errorFile),exist_ok=True) + + if os.path.exists(os.path.dirname(workDir)): + shutil.rmtree(os.path.dirname(workDir)) + os.makedirs(os.path.dirname(workDir),exist_ok=True) + +if __name__ == '__main__': + main() diff --git a/macro/analysis/dielectron/draw_all.py b/macro/analysis/dielectron/draw_all.py new file mode 100644 index 0000000000..bc0ea164b0 --- /dev/null +++ b/macro/analysis/dielectron/draw_all.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 + +import os, shutil + +def main(): + plutoParticles = ["inmed", "phi", "omegaepem", "omegadalitz", "qgp"] + dataDir = "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/" + dataDirHistos = dataDir + "histograms/" + macroDir = "/lustre/cbm/users/criesen/cbmroot/macro/analysis/dielectron" + + if os.path.exists(dataDirHistos): + shutil.rmtree(dataDirHistos) + os.mkdir(dataDirHistos) + + for plutoParticle in plutoParticles: + + outFile = dataDirHistos + plutoParticle + + inFilesAna = dataDir + plutoParticle + "/analysis.all.root" + uMvd = False + drawSig = True + os.system(('root -l -b -q {}/draw_analysis.C\(\\"{}\\",\\"{}\\"\)').format(macroDir, inFilesAna, outFile, uMvd, drawSig)) + + inFilesLitqa = dataDir + plutoParticle + "/litqa.all.root" + os.system(('root -l -b -q {}/draw_litqa.C\(\\"{}\\",\\"{}\\"\)').format(macroDir, inFilesLitqa, outFile)) + + + print("======================================================================================= DRAW ALL ==================================================================================") + os.system(('root -l -b -q {}/draw_analysis_all.C').format(macroDir)) # default values of macro will be taken (see there) + +if __name__ == '__main__': + main() diff --git a/macro/analysis/dielectron/draw_analysis.C b/macro/analysis/dielectron/draw_analysis.C index de016a32ed..937db6e34c 100644 --- a/macro/analysis/dielectron/draw_analysis.C +++ b/macro/analysis/dielectron/draw_analysis.C @@ -1,26 +1,18 @@ -/** draw_analysis.C - * @author Elena Lebedeva <e.lebedeva@gsi.de> - * @since 2010 - * @version 2.0 - **/ +//#include <experimental/filesystem> -void draw_analysis() { +void draw_analysis( + const string& histRootFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/analysis.all.root", + const string& resultDir = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/histograms/inmed/", + Bool_t useMvd = false, + Bool_t drawSignificance = true) - Bool_t useMvd = false; - Bool_t drawSignificance = true; - std::string dir = - "/Users/slebedev/Development/cbm/data/lmvm/agagtest/3.5gev/omegaepem/"; - std::string fileName = dir + "analysis.auau.3.5gev.centr.all.root"; - - std::string script = std::string(TString(gSystem->Getenv("SCRIPT")).Data()); - if (script == "yes") { - dir = std::string(TString(gSystem->Getenv("LMVM_MAIN_DIR")).Data()); - fileName = - dir + std::string(TString(gSystem->Getenv("LMVM_ANA_FILE_NAME")).Data()); - } - - std::string outputDir = dir + "lmvm_results/"; +{ + string outputDir = resultDir + "lmvm_results/"; + //std::filesystem::remove(outputDir); + gSystem->mkdir(outputDir.c_str(), true); CbmAnaDielectronTaskDraw* draw = new CbmAnaDielectronTaskDraw(); - draw->DrawHistFromFile(fileName, outputDir, useMvd); //, drawSignificance); + draw->DrawHistFromFile(histRootFile, outputDir, useMvd, drawSignificance); } diff --git a/macro/analysis/dielectron/draw_analysis_all.C b/macro/analysis/dielectron/draw_analysis_all.C index a0bb88e541..d37d30a59a 100644 --- a/macro/analysis/dielectron/draw_analysis_all.C +++ b/macro/analysis/dielectron/draw_analysis_all.C @@ -1,30 +1,20 @@ -/** draw_analysis.C - * @author Elena Lebedeva <e.lebedeva@gsi.de> - * @since 2011 - * @version 3.0 - **/ - -void draw_analysis_all() { - - Bool_t useMvd = false; - std::string dir = "/Users/slebedev/Development/cbm/data/lmvm/gregor_lmvm/"; - std::string fileName = "analysis.agag.4.5gev.mbias.all.root"; - - std::string script = std::string(TString(gSystem->Getenv("SCRIPT")).Data()); - if (script == "yes") { - dir = std::string(TString(gSystem->Getenv("LMVM_MAIN_DIR")).Data()); - fileName = - std::string(TString(gSystem->Getenv("LMVM_ANA_FILE_NAME")).Data()); - } - - std::string outputDir = dir + "lmvm_results_all/"; - std::string fnInmed = dir + "inmed_" + fileName; - std::string fnQgp = ""; - std::string fnOmega = dir + "omegaepem_" + fileName; - std::string fnPhi = dir + "phi_" + fileName; - std::string fnOmegaD = dir + "omegadalitz_" + fileName; +void draw_analysis_all( + const string& fileInmed = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/analysis.all.root", + const string& fileQgp = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/qgp/analysis.all.root", + const string& fileOmega = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/omegaepem/analysis.all.root", + const string& filePhi = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/phi/analysis.all.root", + const string& fileOmegaD = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/omegadalitz/analysis.all.root", + const string& resultDir = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/histograms/results_all/", + Bool_t useMvd = false) +{ CbmAnaDielectronTaskDrawAll* draw = new CbmAnaDielectronTaskDrawAll(); draw->DrawHistosFromFile( - fnInmed, fnQgp, fnOmega, fnPhi, fnOmegaD, outputDir, useMvd); + fileInmed, fileQgp, fileOmega, filePhi, fileOmegaD, resultDir, useMvd); } diff --git a/macro/analysis/dielectron/draw_litqa.C b/macro/analysis/dielectron/draw_litqa.C index 99dc20399b..08b584bf74 100644 --- a/macro/analysis/dielectron/draw_litqa.C +++ b/macro/analysis/dielectron/draw_litqa.C @@ -1,26 +1,21 @@ -void draw_litqa() { - std::string dir = - "/Users/slebedev/Development/cbm/data/lmvm/may18_100k/8gev/omegaepem/"; - std::string fileName = dir + "litqa.auau.8gev.centr.all.root"; +void draw_litqa( + const string& histRootFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/litqa.all.root", + const string& resultDir = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/histograms/inmed/") - std::string script = std::string(TString(gSystem->Getenv("SCRIPT")).Data()); - if (script == "yes") { - dir = std::string(TString(gSystem->Getenv("LMVM_MAIN_DIR")).Data()); - fileName = - dir - + std::string(TString(gSystem->Getenv("LMVM_LITQA_FILE_NAME")).Data()); - } - - std::string outputDirTracking = dir + "results_litqa_tracking/"; - std::string outputDirClustering = dir + "results_litqa_clustering/"; +{ + string outputDirTracking = resultDir + "results_litqa_tracking/"; gSystem->mkdir(outputDirTracking.c_str(), true); - gSystem->mkdir(outputDirClustering.c_str(), true); CbmSimulationReport* trackingQaReport = new CbmLitTrackingQaReport(); - trackingQaReport->Create(fileName, outputDirTracking); + trackingQaReport->Create(histRootFile, outputDirTracking); + + // string outputDirClustering = resultDir + "results_litqa_clustering/"; + // gSystem->mkdir(outputDirClustering.c_str(), true); - // CbmSimulationReport* clusteringQaReport = new CbmLitClusteringQaReport(); - // clusteringQaReport->Create(fileName, outputDirClustering); + // CbmSimulationReport* clusteringQaReport = new CbmLitClusteringQaReport(); + // clusteringQaReport->Create(fileName, outputDirClustering); // CbmSimulationReport* fitQaReport = new CbmLitFitQaReport(); // fitQaReport->Create(fileName, outputDir); diff --git a/macro/analysis/dielectron/draw_many.py b/macro/analysis/dielectron/draw_many.py new file mode 100755 index 0000000000..4fd301b546 --- /dev/null +++ b/macro/analysis/dielectron/draw_many.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python3 + +import os +import sys +import shutil + + +def main(): + + print ("Use 'draw_all.py' instead!") + + """ + dataDir = sys.argv[1] + geoSetup = sys.argv[2] + plutoParticle = sys.argv[3] + cbmrootConfigPath = "/lustre/nyx/cbm/users/slebedev/cbm/trunk/build/config.sh" + macroDir = "/lustre/nyx/cbm/users/slebedev/cbm/trunk/cbmroot/macro/analysis/dielectron/" + nofEvents = 10 + taskId = os.environ.get('SLURM_ARRAY_TASK_ID') + jobId = os.environ.get('SLURM_ARRAY_JOB_ID') + colEnergy = "8gev" + colSystem = "auau" + print("dataDir:" + dataDir) + + os.system(("source {}").format(cbmrootConfigPath)) + + workDir = dataDir + "/workdir/" + jobId + "_" + taskId + "/" + if os.path.exists(workDir): + shutil.rmtree(workDir) + os.makedirs(workDir) + os.chdir(workDir) + + plutoFile = getPlutoPath(colSystem, colEnergy, plutoParticle, taskId) + urqmdFile = "/lustre/nyx/cbm/prod/gen/urqmd/auau/"+colEnergy+"/centr/urqmd.auau.8gev.centr." + str(taskId).zfill(5) + ".root" + mcFile = dataDir + "/mc." + taskId + ".root" + parFile = dataDir + "/param." + taskId + ".root" + digiFile = dataDir + "/digi." + taskId + ".root" + recoFile = dataDir + "/reco." + taskId + ".root" + litQaFile = dataDir + "/litqa." + taskId + ".root" + analysisFile = dataDir + "/analysis." + taskId + ".root" + geoSimFile = dataDir + "/geosim." + taskId + ".root" + os.system(('root -l -b -q {}/run_sim.C\(\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",{}\)').format( + macroDir, urqmdFile, plutoFile, mcFile, parFile, geoSimFile, geoSetup, nofEvents)) + os.system(('root -l -b -q {}/run_digi.C\(\\"{}\\",\\"{}\\",\\"{}\\",{}\)').format( + macroDir, mcFile, parFile, digiFile, nofEvents)) + os.system(('root -l -b -q {}/run_reco.C\(\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",{}\)').format( + macroDir, mcFile, parFile, digiFile, recoFile, geoSetup, nofEvents)) + os.system(('root -l -b -q {}/run_litqa.C\(\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",{}\)').format( + macroDir, mcFile, parFile, digiFile, recoFile, litQaFile, geoSetup, nofEvents)) + os.system(('root -l -b -q {}/run_analysis.C\(\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",\\"{}\\",{}\)').format( + macroDir, mcFile, parFile, digiFile, recoFile, analysisFile, plutoParticle, colSystem, colEnergy, geoSetup, nofEvents)) + + +def getPlutoPath(colSystem, colEnergy, plutoParticle, taskId): + if plutoParticle == "rho0": + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/"+colEnergy+"/rho0/epem/pluto.auau."+colEnergy+".rho0.epem." + str(taskId).zfill(4) + ".root" + elif plutoParticle == "omegaepem": + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/"+colEnergy+"/omega/epem/pluto.auau."+colEnergy+".omega.epem." + str(taskId).zfill(4) + ".root" + elif plutoParticle == "omegadalitz": + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/"+colEnergy+"/omega/pi0epem/pluto.auau."+colEnergy+".omega.pi0epem." + str(taskId).zfill(4) + ".root" + elif plutoParticle == "phi": + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/"+colEnergy+"/phi/epem/pluto.auau."+colEnergy+".phi.epem." + str(taskId).zfill(4) + ".root" + elif plutoParticle == "pi0": + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/"+colEnergy+"/pi0/gepem/pluto.auau."+colEnergy+".pi0.gepem." + str(taskId).zfill(4) + ".root" + elif plutoParticle == "inmed": + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktRapp/"+colEnergy+"/rapp.inmed/epem/pluto.auau."+colEnergy+".rapp.inmed.epem." + str(taskId).zfill(4) + ".root" + elif plutoParticle == "qgp": + return "/lustre/nyx/cbm/prod/gen/pluto/auau/cktRapp/"+colEnergy+"/rapp.qgp/epem/pluto.auau."+colEnergy+".rapp.qgp.epem." + str(taskId).zfill(4) + ".root" + elif plutoParticle == "urqmd": + return "" +""" + +if __name__ == '__main__': + main() + + diff --git a/macro/analysis/dielectron/draw_separate.py b/macro/analysis/dielectron/draw_separate.py new file mode 100644 index 0000000000..44212da019 --- /dev/null +++ b/macro/analysis/dielectron/draw_separate.py @@ -0,0 +1,17 @@ +import os +import sys +import shutil + +def main() + particle = sys.argv[1] + histDir = "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm" + histDirPart = histDir + "/sepHists/" + particle + os.makedirs(histDirPart) + os.chdir(histDirPart) + os.system(('root -l -b -q {}/draw_sep_ana.C\(\\"{}\\}').format(histDirPart, particle)) + os.system(('root -l -b -q {}/draw_sep_litqa.C\(\\"{}\\}').format(histDirPart, particle)) + + + +if __name__ == '__main__': + main() diff --git a/macro/analysis/dielectron/hadd_many.py b/macro/analysis/dielectron/hadd_many.py new file mode 100755 index 0000000000..f22dc82402 --- /dev/null +++ b/macro/analysis/dielectron/hadd_many.py @@ -0,0 +1,24 @@ +import os +import shutil + +def main(): + plutoParticles = ["inmed", "phi", "omegaepem", "omegadalitz", "qgp"]; + dataDir = "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm" + + for plutoParticle in plutoParticles: + dataDirPluto = dataDir + "/" + plutoParticle + + inFilesLitQa = dataDirPluto + "/litqa.*.root" + outFileLitQa = dataDirPluto + "/litqa.all.root" + if os.path.exists(outFileLitQa): + os.remove(outFileLitQa) + os.system(('hadd -j -T -f {} {}').format(outFileLitQa, inFilesLitQa)) + + inFilesAna = dataDirPluto + "/analysis.*.root" + outFileAna = dataDirPluto + "/analysis.all.root" + if os.path.exists(outFileAna): + os.remove(outFileAna) + os.system(('hadd -j -T -f {} {}').format(outFileAna, inFilesAna)) + +if __name__ == '__main__': + main() diff --git a/macro/analysis/dielectron/run_analysis.C b/macro/analysis/dielectron/run_analysis.C index 37c9a1c886..50acca68b3 100644 --- a/macro/analysis/dielectron/run_analysis.C +++ b/macro/analysis/dielectron/run_analysis.C @@ -1,16 +1,17 @@ void run_analysis( const string& mcFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/mc.00000.root", + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/mc.1.root", const string& parFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/param.00000.root", + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/param.1.root", const string& digiFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/digi.00000.root", + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/digi.1.root", const string& recoFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/reco.00000.root", + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/reco.1.root", const string& analysisFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/analysis.00000.root", - const string& plutoParticle = "omegaepem", - const string& energy = "8gev", + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/analysis.1.root", + const string& plutoParticle = "inmed", + const string& colSystem = "auau", + const string& colEnergy = "8gev", const string& geoSetup = "sis100_electron", int nEvents = 100) { @@ -21,10 +22,7 @@ void run_analysis( remove(analysisFile.c_str()); - TString setupFile = srcDir + "/geometry/setup/setup_" + geoSetup + ".C"; - TString setupFunct = "setup_" + geoSetup + "()"; - gROOT->LoadMacro(setupFile); - gROOT->ProcessLine(setupFunct); + CbmSetup::Instance()->LoadSetup(geoSetup.c_str()); std::cout << std::endl << "-I- " << myName << ": Defining parameter files " << std::endl; @@ -40,7 +38,7 @@ void run_analysis( inputSource->AddFriend(recoFile.c_str()); run->SetSource(inputSource); run->SetOutputFile(analysisFile.c_str()); - run->SetGenerateRunInfo(kTRUE); + run->SetGenerateRunInfo(kFALSE); FairLogger::GetLogger()->SetLogScreenLevel("INFO"); FairLogger::GetLogger()->SetLogVerbosityLevel("LOW"); @@ -55,7 +53,7 @@ void run_analysis( run->AddTask(l1); CbmAnaDielectronTask* task = new CbmAnaDielectronTask(); - task->SetEnergyAndPlutoParticle(energy, plutoParticle); + task->SetEnergyAndPlutoParticle(colEnergy, plutoParticle); task->SetUseMvd(false); task->SetUseRich(true); task->SetUseTrd(true); @@ -64,7 +62,6 @@ void run_analysis( // task->SetTrdAnnCut(0.85); // task->SetRichAnnCut(-0.4); run->AddTask(task); - std::cout << std::endl << std::endl << "-I- " << myName << ": Set runtime DB" << std::endl; @@ -77,7 +74,6 @@ void run_analysis( parIo2->open(parFileList, "in"); rtdb->setSecondInput(parIo2); } - std::cout << std::endl << "-I- " << myName << ": Initialise run" << std::endl; run->Init(); @@ -91,9 +87,9 @@ void run_analysis( timer.Stop(); std::cout << std::endl << std::endl; std::cout << "Macro finished succesfully." << std::endl; - std::cout << "Output file is " << recoFile << std::endl; + std::cout << "Analysis file is " << analysisFile << std::endl; std::cout << "Parameter file is " << parFile << std::endl; std::cout << "Real time " << timer.RealTime() << " s, CPU time " << timer.CpuTime() << " s" << std::endl; std::cout << std::endl << "Test passed" << std::endl << "All ok" << std::endl; -} \ No newline at end of file +} diff --git a/macro/analysis/dielectron/run_digi.C b/macro/analysis/dielectron/run_digi.C index 5c5f4e9e3e..517ec96695 100644 --- a/macro/analysis/dielectron/run_digi.C +++ b/macro/analysis/dielectron/run_digi.C @@ -1,10 +1,11 @@ -void run_digi(const string& mcFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/mc.00000.root", - const string& parFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/param.00000.root", - const string& digiFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/digi.00000.root", - int nEvents = 100) { +void run_digi( + const string& mcFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/mc.2.root", + const string& parFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/param.2.root", + const string& digiFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/digi.2.root", + int nEvents = 1000) { TTree::SetMaxTreeSize(90000000000); FairLogger::GetLogger()->SetLogScreenLevel("INFO"); FairLogger::GetLogger()->SetLogVerbosityLevel("LOW"); diff --git a/macro/analysis/dielectron/run_litqa.C b/macro/analysis/dielectron/run_litqa.C index 7c9afe6987..cf39ea1da2 100644 --- a/macro/analysis/dielectron/run_litqa.C +++ b/macro/analysis/dielectron/run_litqa.C @@ -1,16 +1,16 @@ -void run_litqa(const string& mcFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/mc.00000.root", - const string& parFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/param.00000.root", - const string& digiFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/digi.00000.root", - const string& recoFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/reco.00000.root", - const string& qaFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/litqa.00000.root", - const string& geoSetup = "sis100_electron", - //const string& resultDir = "results_litqa/", - int nEvents = 100) { +void run_litqa( + const string& mcFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/mc.2.root", + const string& parFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/param.2.root", + const string& digiFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/digi.2.root", + const string& recoFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/reco.2.root", + const string& qaFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/litqa.2.root", + const string& geoSetup = "sis100_electron", + int nEvents = 1000) { TTree::SetMaxTreeSize(90000000000); TString myName = "run_litqa"; @@ -18,19 +18,14 @@ void run_litqa(const string& mcFile = remove(qaFile.c_str()); - TString setupFile = srcDir + "/geometry/setup/setup_" + geoSetup + ".C"; - TString setupFunct = "setup_" + geoSetup + "()"; - gROOT->LoadMacro(setupFile); - gROOT->ProcessLine(setupFunct); - + CbmSetup::Instance()->LoadSetup(geoSetup.c_str()); std::cout << std::endl << "-I- " << myName << ": Defining parameter files " << std::endl; TList* parFileList = new TList(); TString geoTag; - // - TRD digitisation parameters - if (CbmSetup::Instance()->GetGeoTag(kTrd, geoTag)) { + if (CbmSetup::Instance()->GetGeoTag(ECbmModuleId::kTrd, geoTag)) { const Char_t* npar[4] = {"asic", "digi", "gas", "gain"}; TObjString* trdParFile(NULL); for (Int_t i(0); i < 4; i++) { @@ -43,7 +38,7 @@ void run_litqa(const string& mcFile = } // - TOF digitisation parameters - if (CbmSetup::Instance()->GetGeoTag(kTof, geoTag)) { + if (CbmSetup::Instance()->GetGeoTag(ECbmModuleId::kTof, geoTag)) { TObjString* tofFile = new TObjString(srcDir + "/parameters/tof/tof_" + geoTag + ".digi.par"); parFileList->Add(tofFile); @@ -55,19 +50,17 @@ void run_litqa(const string& mcFile = std::cout << "-I- " << myName << ": Using parameter file " << tofBdfFile->GetString() << std::endl; } - TStopwatch timer; timer.Start(); gDebug = 0; - FairRunAna* run = new FairRunAna(); FairFileSource* inputSource = new FairFileSource(digiFile.c_str()); inputSource->AddFriend(mcFile.c_str()); inputSource->AddFriend(recoFile.c_str()); run->SetSource(inputSource); run->SetOutputFile(qaFile.c_str()); - run->SetGenerateRunInfo(kTRUE); + run->SetGenerateRunInfo(kFALSE); FairLogger::GetLogger()->SetLogScreenLevel("INFO"); @@ -80,8 +73,8 @@ void run_litqa(const string& mcFile = // RICH reco QA CbmRichRecoQa* richRecoQa = new CbmRichRecoQa(); - richRecoQa->SetOutputDir(resultDir); - run->AddTask(richRecoQa); + richRecoQa->SetOutputDir(""); + // run->AddTask(richRecoQa); // Reconstruction Qa CbmLitTrackingQa* trackingQa = new CbmLitTrackingQa(); @@ -96,9 +89,9 @@ void run_litqa(const string& mcFile = trackingQa->SetVerbose(0); trackingQa->SetMinNofHitsRich(7); trackingQa->SetQuotaRich(0.6); - trackingQa->SetOutputDir(resultDir); + trackingQa->SetOutputDir(""); trackingQa->SetPRange(12, 0., 6.); - // trackingQa->SetTrdAnnCut(trdAnnCut); + //trackingQa->SetTrdAnnCut(trdAnnCut); // removed comment std::vector<std::string> trackCat, richCat; trackCat.push_back("All"); trackCat.push_back("Electron"); @@ -106,22 +99,22 @@ void run_litqa(const string& mcFile = richCat.push_back("ElectronReference"); trackingQa->SetTrackCategories(trackCat); trackingQa->SetRingCategories(richCat); - // run->AddTask(trackingQa); + run->AddTask(trackingQa); CbmLitFitQa* fitQa = new CbmLitFitQa(); fitQa->SetMvdMinNofHits(0); fitQa->SetStsMinNofHits(6); fitQa->SetMuchMinNofHits(10); fitQa->SetTrdMinNofHits(2); - fitQa->SetOutputDir(resultDir); + fitQa->SetOutputDir(""); // run->AddTask(fitQa); CbmLitClusteringQa* clusteringQa = new CbmLitClusteringQa(); - clusteringQa->SetOutputDir(resultDir); + clusteringQa->SetOutputDir(""); // run->AddTask(clusteringQa); CbmLitTofQa* tofQa = new CbmLitTofQa(); - tofQa->SetOutputDir(std::string(resultDir)); + tofQa->SetOutputDir(std::string("")); // run->AddTask(tofQa); std::cout << std::endl @@ -136,7 +129,6 @@ void run_litqa(const string& mcFile = parIo2->open(parFileList, "in"); rtdb->setSecondInput(parIo2); } - std::cout << std::endl << "-I- " << myName << ": Initialise run" << std::endl; run->Init(); @@ -150,7 +142,7 @@ void run_litqa(const string& mcFile = timer.Stop(); std::cout << std::endl << std::endl; std::cout << "Macro finished succesfully." << std::endl; - std::cout << "Output file is " << recoFile << std::endl; + std::cout << "Qa file is " << qaFile << std::endl; std::cout << "Parameter file is " << parFile << std::endl; std::cout << "Real time " << timer.RealTime() << " s, CPU time " << timer.CpuTime() << " s" << std::endl; diff --git a/macro/analysis/dielectron/run_reco.C b/macro/analysis/dielectron/run_reco.C index 357378bd33..6b4ed3a8e6 100644 --- a/macro/analysis/dielectron/run_reco.C +++ b/macro/analysis/dielectron/run_reco.C @@ -1,13 +1,14 @@ -void run_reco(const string& mcFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/mc.00000.root", - const string& parFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/param.00000.root", - const string& digiFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/digi.00000.root", - const string& recoFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/reco.00000.root", - const string& geoSetup = "sis100_electron", - int nEvents = 100) { +void run_reco( + const string& mcFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/mc.1.root", + const string& parFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/param.1.root", + const string& digiFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/digi.1.root", + const string& recoFile = + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/reco.1.root", + const string& geoSetup = "sis100_electron", + int nEvents = 1000) { TTree::SetMaxTreeSize(90000000000); TString myName = "run_reco"; @@ -15,11 +16,7 @@ void run_reco(const string& mcFile = remove(recoFile.c_str()); - TString setupFile = srcDir + "/geometry/setup/setup_" + geoSetup + ".C"; - TString setupFunct = "setup_" + geoSetup + "()"; - gROOT->LoadMacro(setupFile); - gROOT->ProcessLine(setupFunct); - + CbmSetup::Instance()->LoadSetup(geoSetup.c_str()); std::cout << std::endl << "-I- " << myName << ": Defining parameter files " << std::endl; @@ -27,7 +24,7 @@ void run_reco(const string& mcFile = TString geoTag; // - TRD digitisation parameters - if (CbmSetup::Instance()->GetGeoTag(kTrd, geoTag)) { + if (CbmSetup::Instance()->GetGeoTag(ECbmModuleId::kTrd, geoTag)) { const Char_t* npar[4] = {"asic", "digi", "gas", "gain"}; TObjString* trdParFile(NULL); for (Int_t i(0); i < 4; i++) { @@ -40,7 +37,7 @@ void run_reco(const string& mcFile = } // - TOF digitisation parameters - if (CbmSetup::Instance()->GetGeoTag(kTof, geoTag)) { + if (CbmSetup::Instance()->GetGeoTag(ECbmModuleId::kTof, geoTag)) { TObjString* tofFile = new TObjString(srcDir + "/parameters/tof/tof_" + geoTag + ".digi.par"); parFileList->Add(tofFile); @@ -62,7 +59,7 @@ void run_reco(const string& mcFile = inputSource->AddFriend(mcFile.c_str()); run->SetSource(inputSource); run->SetOutputFile(recoFile.c_str()); - run->SetGenerateRunInfo(kTRUE); + run->SetGenerateRunInfo(kFALSE); FairLogger::GetLogger()->SetLogScreenLevel("INFO"); FairLogger::GetLogger()->SetLogVerbosityLevel("LOW"); @@ -84,6 +81,12 @@ void run_reco(const string& mcFile = std::cout << "-I-" << myName << ": " << macroName << " excuted successfully" << std::endl; + CbmTrdSetTracksPidLike* trdLI = + new CbmTrdSetTracksPidLike("TRDLikelihood", "TRDLikelihood"); + trdLI->SetUseMCInfo(kTRUE); + trdLI->SetUseMomDependence(kTRUE); + run->AddTask(trdLI); + CbmMatchRecoToMC* matchRecoToMc = new CbmMatchRecoToMC(); run->AddTask(matchRecoToMc); @@ -113,7 +116,7 @@ void run_reco(const string& mcFile = timer.Stop(); std::cout << std::endl << std::endl; std::cout << "Macro finished succesfully." << std::endl; - std::cout << "Output file is " << recoFile << std::endl; + std::cout << "Reco file is " << recoFile << std::endl; std::cout << "Parameter file is " << parFile << std::endl; std::cout << "Real time " << timer.RealTime() << " s, CPU time " << timer.CpuTime() << " s" << std::endl; diff --git a/macro/analysis/dielectron/run_sim.C b/macro/analysis/dielectron/run_sim.C index 07137263f7..29d3f103ef 100644 --- a/macro/analysis/dielectron/run_sim.C +++ b/macro/analysis/dielectron/run_sim.C @@ -1,18 +1,18 @@ void run_sim( const string& urqmdFile = "/lustre/nyx/cbm/prod/gen/urqmd/auau/8gev/centr/" - "urqmd.auau.8gev.centr.00000.root", // if "", no urqmd + "urqmd.auau.8gev.centr.00001.root", // if "", no urqmd const string& plutoFile = "/lustre/nyx/cbm/prod/gen/pluto/auau/cktA/8gev/omega/epem/" - "pluto.auau.8gev.omega.epem.0000.root", // if "", no pluto particles are embedded into event + "pluto.auau.8gev.omega.epem.0001.root", // if "", no pluto particles are embedded into event const string& mcFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/mc.00000.root", + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/mc.2.root", const string& parFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/param.00000.root", + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/param.2.root", const string& geoFile = - "/lustre/nyx/cbm/users/slebedev/cbm/data/geosim.00000.root", + "/lustre/nyx/cbm/users/criesen/cbm/data/lmvm/inmed/geosim.2.root", const string& geoSetup = "sis100_electron", - int nEvents = 10) { + int nEvents = 1000) { TTree::SetMaxTreeSize(90000000000); FairLogger::GetLogger()->SetLogScreenLevel("INFO"); FairLogger::GetLogger()->SetLogVerbosityLevel("LOW"); @@ -38,7 +38,6 @@ void run_sim( run.SetBeamPosition(0., 0., 0.1, 0.1); run.Run(nEvents); - timer.Stop(); std::cout << std::endl << std::endl; std::cout << "Macro finished successfully." << std::endl; diff --git a/reco/littrack/cbm/elid/CbmLitGlobalElectronId.cxx b/reco/littrack/cbm/elid/CbmLitGlobalElectronId.cxx index df5f5ac40f..aba14f5433 100644 --- a/reco/littrack/cbm/elid/CbmLitGlobalElectronId.cxx +++ b/reco/littrack/cbm/elid/CbmLitGlobalElectronId.cxx @@ -21,7 +21,7 @@ #include <cmath> CbmLitGlobalElectronId::CbmLitGlobalElectronId() - : fTrdAnnCut(0.85) + : fTrdAnnCut(0.6) , fRichAnnCut(-0.4) , fRichUseAnn(true) , fRichMeanA(-1.) @@ -89,7 +89,7 @@ Bool_t CbmLitGlobalElectronId::IsTrdElectron(Int_t globalTrackIndex, CbmTrdTrack* trdTrack = static_cast<CbmTrdTrack*>(fTrdTracks->At(trdId)); if (NULL == trdTrack) return false; - Double_t ann = trdTrack->GetPidANN(); + Double_t ann = trdTrack->GetPidLikeEL(); if (ann > fTrdAnnCut) return true; else @@ -138,7 +138,7 @@ Double_t CbmLitGlobalElectronId::GetTrdAnn(Int_t globalTrackIndex, CbmTrdTrack* trdTrack = static_cast<CbmTrdTrack*>(fTrdTracks->At(trdId)); if (NULL == trdTrack) return -1.; - return trdTrack->GetPidANN(); + return trdTrack->GetPidLikeEL(); } ClassImp(CbmLitGlobalElectronId); -- GitLab