void runAna_mb(TString path, TString runs, TString outfile, TString pattern="", unsigned int nEvents = 0, unsigned int nEvStart = 0) { // ======================================================================== // Verbosity level (0=quiet, 1=event level, 2=track level, 3=debug) Int_t iVerbose = 1; TStopwatch timer; timer.Start(); TString basedir = gSystem->Getenv("VMCWORKDIR"); FairRunAna* fRun = new FairRunAna(); // fRun->SetInputFile(recofile); TPython::LoadMacro("macro/tpc/FOPI/parseFiles.py"); PyFileParser fp; fp.setPath(path.Data()); fp.setPattern(pattern.Data()); int run=(int)fp.setRuns(runs.Data()); for (int i=0; i<(int)fp.getNum();i++) { if (i==0) fRun->SetInputFile((char*)fp.getFile(i)); else fRun->AddFile((char*)fp.getFile(i)); } cout<<(char*)fp.getFile(i)<<"\n"; // return; //fRun->SetInputFile("outfiles/parts/runC_3888_smoothed_000.reco.root"); //fRun->AddFile("outfiles/parts/runC_3888_smoothed_001.reco.root"); //create output file ----------------------------------------------- TString outName(outfile); outName.ReplaceAll(".reco",""); outName.ReplaceAll(".root","_ana.root"); cout<SetOutputFile(outName); //DONE create output file ----------------------------------------------- FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); FairParAsciiFileIo* parInput1 = new FairParAsciiFileIo(); TString tpcDigiFile = basedir; tpcDigiFile+="/tpc/FOPI/par/tpc.run"; tpcDigiFile+=run; tpcDigiFile +=".par"; cout<open(tpcDigiFile.Data(),"in"); rtdb->setFirstInput(parInput1); TpcDigiPar* par = (TpcDigiPar*) rtdb->getContainer("TpcDigiPar"); par->setInputVersion(fRun->GetRunId(),1); par->setChanged(kTRUE); rtdb->Print(); par->init(); Double_t taroff = -65; Double_t targetpos = taroff+41.; // possible materials: copper (default), lead, carbon TString targetmat = TString("carbon"); TString alignmentFileName = par->getAlignmentFile(); TString geoFile; geoFile.Form("$FOPI2ROOT/fopigeometry/FopiGeom_s339%5.1f.root",targetpos); TFile* geotmp =new TFile(geoFile.Data(),"READ"); if(geotmp->IsOpen()) { std::cout<<"geofile exists already\n"; geotmp->Close(); } else { TString cmd; cmd.Form(".! root -b -q '$FOPI2ROOT/fopigeometry/FopiGeom.C(%f,\"%s\",\"%s\",\"%s\",kFALSE)'",targetpos,targetmat.Data(),alignmentFileName.Data(),geoFile.Data(),false,false); gROOT->ProcessLine(cmd); } fRun->SetGeomFile(geoFile); FOPIField *fMagField = new FOPIField(0.616); fMagField->SetTargetOffset(taroff); fRun->SetField(fMagField); //--------------------SET UP TASKS ------------------------------ TpcEventCounter* evCount = new TpcEventCounter(); if (nEvents>0) evCount->SetnEvts(nEvents); else evCount->SetStep(1000); fRun->AddTask(evCount); cout<<"Setting up CosmicsTask"<SetPersistence(); Cos->SetNumberOfTrackReps(1); // set to 2 if you use GeaneTrackrep (tpcSPR->useGeane();) Cos->SetUnbiased(); Cos->SetVerbose(); // fRun->AddTask(Cos); cout<<"Setting up Track Cleaner"<SetCosmics(); tpcTrCl->SetThetaCut(40,140); //tpcTrCl->SetPhiCut(70,110); tpcTrCl->SetClMeanCut(900); //tpcTrCl->SetVerbose(); tpcTrCl->SetKeepDelTracks(); fRun->AddTask(tpcTrCl); // ----- Intialise and run -------------------------------------------- cout<<"************start ini***************"<Init(); //Initialize the Digimapper: TpcDigiPar* tpcpar = FairRun::Instance()->GetRuntimeDb()->getContainer("TpcDigiPar"); TpcDigiMapper::getInstance()->init(tpcpar); TpcAlignmentManager::init(tpcpar->getAlignmentFile()); cout<<"********************************************"<getPadPlane()->GetNPads()<print(); std::cout<<"start:"<RunMixed(nEvStart,nEvents); timer.Stop(); Double_t rtime = timer.RealTime(); Double_t ctime = timer.CpuTime(); printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime); std::cout<<"OutputFile: "<