// ----------------------------------------------------------------------------- // ----------dEdx task Macro for ALICE GEM TPC IROC Test in PS------------- // ----------------------------------------------------------------------------- // ----------Philipp Gadow E18/E12 Bachelor student July 2013------------------- // ----------------------------------------------------------------------------- void rundEdxALICE2(int runNumber=682, unsigned int nEvents = 0, unsigned int nEvStart = 0, unsigned int dataNumber = 13, TString inputpath="/nfs/mds/data/tpc/alice/ps_test_beam/RecoOut/", TString outpath="/nfs/mds/data/tpc/alice/ps_test_beam/dEdxDATA", bool forceDriftVel = false, ) { // ======================================================================== // Verbosity level (0=quiet, 1=event level, 2=track level, 3=debug) Int_t iVerbose = 0; //Stopwatch for performance checks TStopwatch timer; timer.Start(); //-------------------- SET UP ROOT --------------------------------------- gROOT->SetBatch(); //to ensure running in batch TString basedir = gSystem->Getenv("VMCWORKDIR"); // gROOT->ProcessLine(".x $VMCWORKDIR/gconfig/rootlogon.C"); FairRunAna* fRun = new FairRunAna(); TString jobname = ""; jobname += "merge_"; jobname += runNumber; jobname += "_"; jobname += dataNumber; jobname += "_2_dEdxDATA.reco.root"; TString outFile = outpath+"/"; outFile += jobname; fRun->SetOutputFile(outFile); //--- Parameter database --- FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); FairParAsciiFileIo* parInput1 = new FairParAsciiFileIo(); TString parFile = "/tpc/ALICE/par/tpc.iroc.par"; parFile = basedir+parFile; std::cout << "parFile: " << parFile << std::endl; parInput1->open(parFile.Data(),"in"); rtdb->setFirstInput(parInput1); TpcDigiPar* par = (TpcDigiPar*) rtdb->getContainer("TpcDigiPar"); par->setInputVersion(fRun->GetRunId(),1); par->setChanged(kTRUE); par->init(); //--- add geometry file to fRun --- TString geoFile = "/nfs/hicran/project/alice/users/pgadow/MakeGeometry/ALICEGeom_test.root"; // absolute link fRun->SetGeomFile(geoFile); PndConstField *fMagField=new PndConstField(); fMagField->SetField(0., 0. , 0. ); // values are in kG fMagField->SetFieldRegion(-500, 500,-500, 500, -2000, 2000); // values are in cm fRun->SetField(fMagField); //--- load input file --- TString inputfile = ""; inputfile += inputpath; inputfile += "merge_"; inputfile += runNumber; inputfile += "_"; inputfile += dataNumber; inputfile += "_corrected_hough_smoothed.reco.root"; //extract number of entries in external data tree TFile testFile(inputfile); if(testFile.IsZombie()||!(testFile.Get("cbmsim"))){ cerr<<"ZOOOOOOOoooooooombie"<GetEntries(); std::cout<<"Found "<SetInputFile(inputfile); //--------------------SET UP TASKS ------------------------------ FairLogger::GetLogger()->SetLogToScreen(false); //Should be done on macro level FairField* field=FairRunAna::Instance()->GetField(); GFFieldManager::getInstance()->init(new PndFieldAdaptor(field)); //################################################################ //dEdx Task //################################################################ // dE/dx task Alice TpcdEdxTaskAlice* dEdx = new TpcdEdxTaskAlice(); dEdx->SetTrackBranchName("TrackPostFit"); dEdx->SetClusterBranchName("TpcSPHit"); dEdx->SetDigiBranchName("TpcDigi"); //dEdx->SetIdealdEdx(); dEdx->SetPersistence(); //dEdx->SetVerbose(1); dEdx->SetSearchwidth(2); //searchwidth in cm, defines a square in which is searched around the track fRun->AddTask(dEdx); // ----- Intialise and run -------------------------------------------- fRun->Init(); // Initialize the Digimapper: TpcDigiPar* tpcpar = FairRun::Instance()->GetRuntimeDb()->getContainer("TpcDigiPar"); // TpcDigiMapper::getInstance()->init(par); TpcDigiMapper::getInstance()->init(tpcpar); TpcDigiMapper::getInstance()->forceManualDriftVel(forceDriftVel); // TpcAlignmentManager::getInstance(); // TpcAlignmentManager::init(tpcpar->getAlignmentFile()); std::cout<<"start:"<Run(nEvStart,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: "<