void runAnaCosmics(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 = 0; Int_t persistence=1; // Output file /* TString outFile = infile; outFile.ReplaceAll(".reco",""); outFile.ReplaceAll(".root",nameadd+".root"); outFile.ReplaceAll(".root",".ana.root"); if (outfolder!="NULL") { Ssiz_t beginn=outFile.Last('/'); Ssiz_t length=outFile.Length(); TSubString lastterm=outFile.operator()(beginn, length); TString outFile = outfolder+lastterm; } */ // ---- Load libraries ------------------------------------------------- TString basedir = gSystem->Getenv("VMCWORKDIR"); TStopwatch timer; timer.Start(); // ----- Digitization run ------------------------------------------- FairRunAna *fRun= new FairRunAna(); //fRun->SetInputFile(infile); //cout<<"Set Input File: "<SetOutputFile(outFile); cout<<"Set Output File: "<SetInputFile((char*)fp.getFile(i)); else fRun->AddFile((char*)fp.getFile(i)); } cout<<(char*)fp.getFile(i)<<"\n"; // ----- Parameter database -------------------------------------------- cout<<"Create FairRuntimeDb"<GetRuntimeDb(); /* TString parFile = infile; parFile.ReplaceAll(".reco.root",".param.root"); FairParRootFileIo* parInput1 = new FairParRootFileIo(); parInput1->open(parFile.Data()); cout<<"the parameter input:\n"; parInput1->print(); //rtdb->setFirstInput(parInput1); //rtdb->print(); */ TString parFile; FairParAsciiFileIo* parInput2 = new FairParAsciiFileIo(); parFile = basedir; parFile+="/tpc/FOPI/par/tpc.run"; parFile+=run; parFile +=".par"; cout<open(parFile.Data(),"in"); parInput2->print(); rtdb->setFirstInput(parInput2); TpcDigiPar* tpcpar = (TpcDigiPar*) rtdb->getContainer("TpcDigiPar"); tpcpar->setInputVersion(fRun->GetRunId(),1); tpcpar->setChanged(kTRUE); tpcpar->init(); Double_t taroff = -65; Double_t targetpos = taroff+41.; // possible materials: copper (default), lead, carbon TString targetmat = TString("carbon"); TString alignmentFileName = tpcpar->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); cout<<"Setting Magnetic Field"<SetTargetOffset(taroff); fRun->SetField(fMagField); //initialize GF field GFFieldManager::getInstance()->init(new PndFieldAdaptor(fRun->GetField())); GFMaterialEffects::getInstance()->init(new GFTGeoMaterialInterface()); // ------- RECO procedure ------------------------------------------------ cout<<"Setting up Event Counter"<SetEvtsFromChain(); } else evCount->SetnEvts(nEvents); fRun->AddTask(evCount); cout<<"Setting up Cut Task\n"<SetCosmics(); tpcTrCl->SetThetaCut(40,140); tpcTrCl->SetClMeanCut(900); tpcTrCl->SetTrackLenCut(3); //tpcTrCl->SetPhiCut(70,110); tpcTrCl->SetVerbose(iVerbose); tpcTrCl->SetKeepDelTracks(); //fRun->AddTask(tpcTrCl); // ----- Intialise and run -------------------------------------------- cout<<"Initialising run"<Init(); // Initialize the Digimapper: std::cout<<"Number of events to process:"<Run(nEvStart, nEvents); rtdb->print(); // ------------------------------------------------------------------------ // ----- Finish ------------------------------------------------------- timer.Stop(); Double_t rtime = timer.RealTime(); Double_t ctime = timer.CpuTime(); cout << endl << endl; cout << "Macro finished succesfully." << endl; cout << "Output file is " << outFile << endl; cout << "Parameter file is " << parFile << endl; cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl; cout << endl; // ------------------------------------------------------------------------ std::cout<<"OutputFile: "<