{ gROOT->LoadMacro("$VMCWORKDIR/gconfig/rootlogon.C"); rootlogon(); TString base="tstQA"; TString inFile = base+".root"; TString parFile = base+".param.root"; TString outFile = base+".recoReal.root"; Int_t nEvents = 0; FairRunAna *fRun= new FairRunAna(); fRun->SetInputFile(inFile); fRun->SetOutputFile(outFile); FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); FairParRootFileIo* parInput1 = new FairParRootFileIo(); parInput1->open(parFile.Data()); rtdb->setFirstInput(parInput1); rtdb->Print(); // ----- Add tasks // ------------------------------------------------- PndDchDigiProducer* digiProducer= new PndDchDigiProducer(); digiProducer->SetVerbose(0); fRun->AddTask(digiProducer); // ------------------------------------------------- PndDchCylinderHitProducer* cylHitProducer= new PndDchCylinderHitProducer(); cylHitProducer->SetVerbose(0); fRun->AddTask(cylHitProducer); // ------------------------------------------------- //------ Ideal DCH track finder -------------------- PndDchFindTracks* finderTask = new PndDchFindTracks("dchFindTracks"); finderTask->SetUseHitOrDigi("chit"); finderTask->SetVerbose(0); fRun->AddTask(finderTask); // ------------------------------------------------- PndDchTrackFinderIdealCylHit* mcTrackFinder = new PndDchTrackFinderIdealCylHit(); mcTrackFinder->SetVerbose(0); mcTrackFinder->SetPrimary(1); // 1 = Only primary tracks are processed, 0 = all (default) finderTask->UseFinder(mcTrackFinder); //-------------------------------------------------- PndDchMatchTracks *matchTask = new PndDchMatchTracks();//match PndDchTracks and MCTracks matchTask->SetUseHitOrDigi("chit"); matchTask->SetVerbose(0); fRun->AddTask(matchTask); // ----- Prepare GEANE -------------------------------------------- // this will load Geant3 and execute setup macros to initialize geometry: FairGeane *Geane = new FairGeane(inFile); // ------------------------------------------------- PndDchPreFitterTR* dchPreFitter = new PndDchPreFitterTR(); dchPreFitter->SetVerbose(0); fRun->AddTask(dchPreFitter); // ------------------------------------------------- PndDchPreFitterTRQATask* dchPreFitterQA = new PndDchPreFitterTRQATask(); dchPreFitterQA->SetVerbose(0); fRun->AddTask(dchPreFitterQA); // ------------------------------------------------- PndDchPrepareKalmanTracks2 *prepareKalmanTracks = new PndDchPrepareKalmanTracks2(); prepareKalmanTracks->SetVerbose(0); prepareKalmanTracks->UseGeane(kTRUE); prepareKalmanTracks->UseMC(kFALSE); prepareKalmanTracks->SetPDG(2212); prepareKalmanTracks->SetPersistence(); fRun->AddTask(prepareKalmanTracks); // ------------------------------------------------- PndDchKalmanTask2* dchKalman = new PndDchKalmanTask2(); dchKalman->SetVerbose(0); dchKalman->SetNumIterations(1); dchKalman->SetSmooth(kFALSE); fRun->AddTask(dchKalman); // ------------------------------------------------- PndDchKalmanQATask* dchKalmanQA = new PndDchKalmanQATask(); dchKalmanQA->SetVerbose(0); fRun->AddTask(dchKalmanQA); // ------------------------------------------------- fRun->Init(); Geane->SetField(fRun->GetField()); fRun->Run(0,nEvents); Double_t nofTracks = 3.*100.; DchPreFitterTRQA->cd(); TH1F* pullpPrefitter = (TH1F*)gDirectory->Get("pullP"); gDirectory->cd("../DchKalmanQA"); TH1F* pullpKalman = (TH1F*)gDirectory->Get("pullP"); Double_t pMeanPrefitter = 100.*pullpPrefitter->GetMean(); Double_t pRmsPrefitter = 100.*pullpPrefitter->GetRMS(); Double_t pMeanKalman = 100.*pullpKalman->GetMean(); Double_t pRmsKalman = 100.*pullpKalman->GetRMS(); cout<<"\n\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<