void global_analysis(Int_t nEvents = 100) { TString script = TString(gSystem->Getenv("LIT_SCRIPT")); TString parDir = TString(gSystem->Getenv("VMCWORKDIR")) + TString("/parameters"); TString id = "0001"; TString mvd = "mvd4"; TString field = "1.0"; TString delta = ""; TString dir = "/hera/cbm/users/ekrebs/analysis/dielectron/auau/centr/25gev/"+field+"field_50.0z_"+mvd+"/rho0/epem"; TString mcFile = dir + "/sim/mc." + id + ".root"; TString parFile = dir + "/par/param." + id + ".root"; //TString recoFile = "./reco_mvd_lit.0001.root"; TString recoFile = dir + "/reco" + delta + "/reco." + id + ".root"; //TString dir = "/hera/cbm/users/vassilie/mc/nov12/tof_10m/urqmd/auau/25gev/centr"; //TString mcFile = dir + "/mc.auau.25gev.centr.00001.root"; //TString parFile = dir + "/params.auau.25gev.centr.00001.root"; //TString recoFile = dir + "/reco.auau.25gev.centr.00001.root"; TString analysisFile = "analysis." + id + ".root"; TString mcDielFile = "analysis.mvd.mc.25gev_"+field+"field_" + mvd + delta + ".rho0.epem.root"; TString gammaDielFile = "analysis.mvd.gamma.25gev_"+field+"field_" + mvd + delta + ".rho0.epem.root"; TString recoDielFile = "analysis.mvd.reco.25gev_"+field+"field_" + mvd + delta + ".rho0.epem.root"; TString matchFile = dir + "/reco" + delta + "/match." + id + ".root"; TString energy = "25gev"; TString plutoParticle = "rho0"; TString useMcMomentum = "no"; Double_t pionMisidLevel = -1; //TString stsDigiFile = parDir + "/sts/sts_v12b_std.digi.par"; // STS digi file TObjString stsDigiFile = parDir + "/sts/sts_v12b_std.digi.par"; // STS digi file if (script == "yes") { nEvents = TString(gSystem->Getenv("LIT_NEVENTS")).Atoi(); mcFile = TString(gSystem->Getenv("LIT_MC_FILE")); recoFile = TString(gSystem->Getenv("LIT_GLOBAL_RECO_FILE")); parFile = TString(gSystem->Getenv("LIT_PAR_FILE")); analysisFile = TString(gSystem->Getenv("LIT_ANALYSIS_FILE")); mcDielFile = TString(gSystem->Getenv("LIT_MC_DIEL_ANALYSIS_FILE")); gammaDielFile = TString(gSystem->Getenv("LIT_GAMMA_DIEL_ANALYSIS_FILE")); recoDielFile = TString(gSystem->Getenv("LIT_RECO_DIEL_ANALYSIS_FILE")); matchFile = TString(gSystem->Getenv("LIT_MATCH_FILE")); pionMisidLevel = TString(gSystem->Getenv("LIT_PION_MISIDENTIFICATION_LEVEL")).Atof(); energy = TString(gSystem->Getenv("LIT_ENERGY")); plutoParticle = TString(gSystem->Getenv("LIT_PLUTO_PARTICLE")); useMcMomentum = TString(gSystem->Getenv("LIT_USE_MC_MOMENTUM")); stsDigiFile = TString(gSystem->Getenv("LIT_STS_DIGI")); } TList *parFileList = new TList(); parFileList->Add(&stsDigiFile); gSystem->Load("libDielectron"); gROOT->LoadMacro("$VMCWORKDIR/macro/littrack/determine_setup.C"); TStopwatch timer; timer.Start(); FairRunAna* fRun = new FairRunAna(); fRun->SetName("TGeant3"); fRun->SetInputFile(mcFile); fRun->SetOutputFile(analysisFile); if(!gSystem->AccessPathName(recoFile)) { fRun->AddFriend(recoFile); if(!gSystem->AccessPathName(matchFile)) { fRun->AddFriend(matchFile); } //CbmKF is needed for Extrapolation CbmKF* kf = new CbmKF(); fRun->AddTask(kf); } CbmMvdAnaMcDielectronTask *mcDielTaskMvd = new CbmMvdAnaMcDielectronTask(); if (energy == "10gev") { // weight rho0 = Multiplicity * Branching Ratio = 9 * 4.7e-5 for 10 AGeV beam energy if (plutoParticle == "rho0") mcDielTaskMvd->SetWeight(0.000423); // weight omega = Multiplicity * Branching Ratio = 19 * 7.07e-5 for 10 AGeV beam energy if (plutoParticle == "omegaepem" ) mcDielTaskMvd->SetWeight(0.0013433); // weight omega = Multiplicity * Branching Ratio = 19 * 5.9e-4 for 10 AGeV beam energy if (plutoParticle == "omegadalitz") mcDielTaskMvd->SetWeight(0.01121); // weight phi = Multipli0city * Branching Ratio = 0.12 * 3.09e-4 for 10 AGeV beam energy if (plutoParticle == "phi") mcDielTaskMvd->SetWeight(0.00003708); } else if (energy == "25gev") { // weight rho0 = Multiplicity * Branching Ratio = 23 * 4.7e-5 for 25 AGeV beam energy if (plutoParticle == "rho0") mcDielTaskMvd->SetWeight(0.001081); // weight omega = Multiplicity * Branching Ratio = 38 * 7.07e-5 for 25 AGeV beam energy if (plutoParticle == "omegaepem" ) mcDielTaskMvd->SetWeight(0.0026866); // weight omega = Multiplicity * Branching Ratio = 38 * 5.9e-4 for 25 AGeV beam energy if (plutoParticle == "omegadalitz") mcDielTaskMvd->SetWeight(0.02242); // weight phi = Multiplicity * Branching Ratio = 1.28 * 3.09e-4 for 25 AGeV beam energy if (plutoParticle == "phi") mcDielTaskMvd->SetWeight(0.00039552); // weight pi0 = Multiplicity * Branching Ratio = 365 * 1.2e-2 for 25 AGeV beam energy if (plutoParticle == "pi0") mcDielTaskMvd->SetWeight(4.38); } //mcDielTaskMvd->SetUseMvd(IsMvd(parFile)); //mcDielTaskMvd->SetUseTrd(IsTrd(parFile)); //mcDielTaskMvd->SetPionMisidLevel(pionMisidLevel); //mcDielTaskCbm->SetUseMcMomentum(false); //if (useMcMomentum == "yes") mcDielTaskMvd->SetUseMcMomentum(true); mcDielTaskMvd->SetOutFile(mcDielFile.Data()); //fRun->AddTask(mcDielTaskMvd); CbmMvdAnaRecoDielectronTask *recoDielTaskMvd = new CbmMvdAnaRecoDielectronTask(); //recoDielTaskMvd->SetWeight(mcDielTaskMvd->GetWeight()); recoDielTaskMvd->SetOutFile(recoDielFile.Data()); recoDielTaskMvd->SetCutMvdPrimary(kTRUE); fRun->AddTask(recoDielTaskMvd); CbmMvdFindGammaTask *findGamma = new CbmMvdFindGammaTask("nn", 0); findGamma->SetOutFile(gammaDielFile.Data()); //fRun->AddTask(findGamma); CbmMvdGammaCombinatorialTask *findGammaComb = new CbmMvdGammaCombinatorialTask("nn", 0); findGammaComb->SetOutFile(gammaDielFile.Data()); //fRun->AddTask(findGammaComb); CbmMvdFindGammaMcTask *findGammaMc = new CbmMvdFindGammaMcTask("nn", 0); findGammaMc->SetOutFile(gammaDielFile.Data()); //fRun->AddTask(findGammaMc); FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); FairParRootFileIo* parIo1 = new FairParRootFileIo(); FairParAsciiFileIo* parIo2 = new FairParAsciiFileIo(); parIo1->open(parFile.Data()); parIo2->open(parFileList, "in"); //parIo2->open(stsDigiFile.Data(), "in"); rtdb->setFirstInput(parIo1); rtdb->setSecondInput(parIo2); fRun->Init(); fRun->Run(0, nEvents); timer.Stop(); std::cout << "Macro finished succesfully." << std::endl; std::cout << "Output 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 << " Test passed" << std::endl; std::cout << " All ok " << std::endl; }