// ----------------------------------------------------------------------------- // ----- ana_trks.C ----- // ----- ----- // ----- adapted by C. Simon on 2018-06-11 ----- // ----- ----- // ----------------------------------------------------------------------------- void ana_trks(Int_t iNEvents, Int_t iCorMode, Int_t iAnaCorMode, const TString& tUnpackDir, const TString& tCluDir, const TString& tInputFilePath, Int_t iNDigiFiles, const TString& tMCLinkFileName, Int_t iNLinkFiles, const TString& tTofGeoVersion, const TString& tSetupName, Bool_t bIdealCalibration, Bool_t bHeavyIonCollisions, Bool_t bSeparateHitFile, Bool_t bIdealClustering, Bool_t bAnalysisMCQA, Int_t iTrackingSetup, Double_t dRange1, Double_t dRange2, Bool_t bFinalRun, Int_t iDut, Int_t iMRef, Int_t iBRef, Int_t iSel2, Double_t dScaleFactor, Bool_t bSimData) { // --------------------------------------------------------------------------- TString tLogLevel = "ERROR"; TString tLogVerbosity = "LOW"; gErrorIgnoreLevel = kWarning; gDebug = 0; TTree::SetMaxTreeSize(1000000000000LL); // [B] here: 1 TB // --------------------------------------------------------------------------- TStopwatch tTimer; tTimer.Start(); // --------------------------------------------------------------------------- FairLogger::GetLogger()->SetLogScreenLevel(tLogLevel.Data()); FairLogger::GetLogger()->SetLogVerbosityLevel(tLogVerbosity.Data()); // --------------------------------------------------------------------------- TString tSrcDir = gSystem->Getenv("VMCWORKDIR"); TString tMacroDir = tSrcDir + "/macro/beamtime"; TString tParamDir = tSrcDir + "/parameters"; TString tGeoDir = tSrcDir + "/geometry"; TString tUnpackInputFile = tUnpackDir + "/data/unpack.out.root"; TString tCluInputFile = tCluDir + "/data/digi.out.root"; TString tOutputFile = "./hits.out.root"; TString tHistoFile = "./ana_track.hst.root"; TString tInputTrackCalibFile = "./calib_track.cor_in.root"; TString tOutputTrackCalibFile = "./calib_track.cor_out.root"; TString tInputAnaCalibFile = "./calib_ana.cor_in.root"; TString tOutputAnaCalibFile = "./calib_ana.cor_out.root"; // --------------------------------------------------------------------------- TList* tParFileList = new TList(); TObjString* tTofDigiParFile = new TObjString(tParamDir + "/tof/tof_"+ tTofGeoVersion + ".digi.par"); TObjString* tTofDigiBdfParFile = new TObjString(tParamDir + "/tof/tof_"+ tTofGeoVersion + ".digibdf.par"); tParFileList->Add(tTofDigiParFile); tParFileList->Add(tTofDigiBdfParFile); // --------------------------------------------------------------------------- if(bSimData) { if(bHeavyIonCollisions) { TFile::Open(tInputFilePath + "/001/data/mc/00001/data/" + tSetupName + "_geofile_full.root"); } else { TFile::Open(tInputFilePath + "/001/data/" + tSetupName + "_geofile_full.root"); } } else { TFile::Open(tGeoDir + "/tof/geofile_tof_" + tTofGeoVersion + ".root"); } gFile->Get("FAIRGeom"); if(!gGeoManager) { std::cout << "-E- ana_trks: FAIRGeom not found in geometry file!" << std::endl; return; } // --------------------------------------------------------------------------- FairFileSource* tFileSource = new FairFileSource(tUnpackInputFile); if(bSeparateHitFile) { tFileSource->AddFriend(tCluInputFile); } // --------------------------------------------------------------------------- FairRunAna* tRun= new FairRunAna(); tRun->SetContainerStatic(kTRUE); tRun->SetSource(tFileSource); tRun->SetOutputFile(tOutputFile); /* FairMonitor::GetMonitor()->EnableMonitor(kTRUE); */ // --------------------------------------------------------------------------- Int_t iSel = 1000*iDut + iMRef; Int_t iDutCounter = iDut%10; Int_t iDutModule = ((iDut - iDutCounter)/10)%10; Int_t iDutType = (iDut - iDutCounter - 10*iDutModule)/100; Int_t iMRefCounter = iMRef%10; Int_t iMRefModule = ((iMRef - iMRefCounter)/10)%10; Int_t iMRefType = (iMRef - iMRefCounter - 10*iMRefModule)/100; Int_t iBRefCounter = iBRef%10; Int_t iBRefModule = ((iBRef - iBRefCounter)/10)%10; Int_t iBRefType = (iBRef - iBRefCounter - 10*iBRefModule)/100; Int_t iSel2Counter = iSel2%10; Int_t iSel2Module = ((iSel2 - iSel2Counter)/10)%10; Int_t iSel2Type = (iSel2 - iSel2Counter - 10*iSel2Module)/100; // --------------------------------------------------------------------------- CbmMCDataManager* tDataManager = new CbmMCDataManager("MCManager"); if(bSimData) { if(bHeavyIonCollisions) { for(Int_t iDigiFile = 1; iDigiFile <= iNDigiFiles; iDigiFile++) { for(Int_t iLinkFile = 1; iLinkFile <= iNLinkFiles; iLinkFile++) { tDataManager->AddFileToChain(tInputFilePath + TString::Format("/%03d/data", iDigiFile) + TString::Format("/mc/%05d/data/", iLinkFile) + tMCLinkFileName, iDigiFile - 1); } } } else { for(Int_t iDigiFile = 1; iDigiFile <= iNDigiFiles; iDigiFile++) { tDataManager->AddFileToChain(tInputFilePath + TString::Format("/%03d/data/", iDigiFile) + tMCLinkFileName, iDigiFile - 1); } } } // --------------------------------------------------------------------------- Double_t dTyMean = 0.11; CbmTofTrackFitter* tTofTrackFitter = new CbmTofTrackFitterKF(0, 211); CbmTofTrackFinderNN* tTofTrackFinder = new CbmTofTrackFinderNN(); tTofTrackFinder->SetFitter(tTofTrackFitter); if(bSimData) { if(!bHeavyIonCollisions && bIdealCalibration) { tTofTrackFinder->SetMaxTofTimeDifference(5.); tTofTrackFinder->SetTxLIM(0.05); tTofTrackFinder->SetTyLIM(0.05); tTofTrackFinder->SetTyMean(dTyMean); tTofTrackFinder->SetSIGLIM(1.2*dRange2); tTofTrackFinder->SetChiMaxAccept(dRange2); // tTofTrackFinder->SetPosYMaxScal(0.55); tTofTrackFinder->SetPosYMaxScal(100.); } if(bHeavyIonCollisions && bIdealCalibration) { tTofTrackFinder->SetMaxTofTimeDifference(0.05); tTofTrackFinder->SetTxLIM(0.03); tTofTrackFinder->SetTyLIM(0.03); tTofTrackFinder->SetTyMean(dTyMean); tTofTrackFinder->SetSIGLIM(1.4); tTofTrackFinder->SetChiMaxAccept(1.5); // tTofTrackFinder->SetChiMaxAccept(4.); // tTofTrackFinder->SetSIGLIM(dRange2*1.2); // tTofTrackFinder->SetChiMaxAccept(dRange2); // tTofTrackFinder->SetPosYMaxScal(0.55); tTofTrackFinder->SetPosYMaxScal(100.); } } else { tTofTrackFinder->SetMaxTofTimeDifference(5.); tTofTrackFinder->SetTxLIM(0.03); tTofTrackFinder->SetTyLIM(0.03); tTofTrackFinder->SetTyMean(dTyMean); tTofTrackFinder->SetSIGLIM(1.2*dRange2); tTofTrackFinder->SetChiMaxAccept(dRange2); tTofTrackFinder->SetPosYMaxScal(100.); } CbmTofFindTracks* tTofFindTracks = new CbmTofFindTracks("TOF Track Finder"); tTofFindTracks->SetCalParFileName(tInputTrackCalibFile); tTofFindTracks->SetCalOutFileName(tOutputTrackCalibFile); tTofFindTracks->UseFinder(tTofTrackFinder); tTofFindTracks->UseFitter(tTofTrackFitter); tTofFindTracks->SetCorMode(iCorMode); tTofFindTracks->SetUseSigCalib(kTRUE); tTofFindTracks->SetRemoveSignalPropagationTime(!bIdealClustering); tTofFindTracks->SetBeamCounter(iBRefType, iBRefModule, iBRefCounter); if(bSimData) { if(!bHeavyIonCollisions && bIdealCalibration) { tTofFindTracks->SetStationMaxHMul(1); tTofFindTracks->SetTtTarg(0.035); tTofFindTracks->SetT0MAX(0.); //tTofFindTracks->SetT0MAX(dRange1); tTofFindTracks->SetSIGT(0.08); tTofFindTracks->SetSIGX(0.4); tTofFindTracks->SetSIGY(0.9); tTofFindTracks->SetSIGZ(0.05); tTofFindTracks->SetBeamMomentumLab(3.); // tTofFindTracks->SetBeamMomentumLab(10.); FIXME: avoid hard coding? } if(bHeavyIonCollisions && bIdealCalibration) { tTofFindTracks->SetStationMaxHMul(10); tTofFindTracks->SetBeamMaxHMul(1); tTofFindTracks->SetTtTarg(0.035); tTofFindTracks->SetT0MAX(1.); //tTofFindTracks->SetT0MAX(dRange1); tTofFindTracks->SetSIGT(0.08); tTofFindTracks->SetSIGX(0.4); tTofFindTracks->SetSIGY(0.9); tTofFindTracks->SetSIGZ(0.05); tTofFindTracks->SetBeamMomentumLab(30.); } } else { tTofFindTracks->SetStationMaxHMul(10); tTofFindTracks->SetBeamMaxHMul(1); tTofFindTracks->SetTtTarg(0.035); tTofFindTracks->SetT0MAX(dRange1); tTofFindTracks->SetSIGT(0.08); tTofFindTracks->SetSIGX(0.4); tTofFindTracks->SetSIGY(0.9); tTofFindTracks->SetSIGZ(0.05); tTofFindTracks->SetBeamMomentumLab(30.); } Int_t iMinNofHits = 0; Int_t iNStations = 0; Int_t iNReqStations = 0; switch(iTrackingSetup) { case 0: iMinNofHits = 5; iNStations = 5; iNReqStations = 5; if(bFinalRun) { iMinNofHits--; iNStations--; iNReqStations--; } tTofFindTracks->SetStation(0, iBRefType, iBRefModule, iBRefCounter); switch(iDut) { case 901: tTofFindTracks->SetStation(1, 9, 2, 1); tTofFindTracks->SetStation(2, 4, 0, 0); tTofFindTracks->SetStation(3, 9, 2, 0); break; case 920: tTofFindTracks->SetStation(1, 9, 2, 1); tTofFindTracks->SetStation(2, 4, 0, 0); tTofFindTracks->SetStation(3, 9, 0, 1); break; default: break; } if(!bFinalRun) { tTofFindTracks->SetStation(4, iDutType, iDutModule, iDutCounter); } break; case 1: // FIXME iMinNofHits = 3; iNStations = 4; iNReqStations = 4; tTofFindTracks->SetStation(0, 4, 0, 0); tTofFindTracks->SetStation(1, 9, 2, 1); tTofFindTracks->SetStation(2, 9, 0, 1); tTofFindTracks->SetStation(3, 9, 2, 0); break; default: std::cout << "-E- ana_trks: tracking setup not known!" << std::endl; return; } tTofFindTracks->SetMinNofHits(iMinNofHits); tTofFindTracks->SetNStations(iNStations); tTofFindTracks->SetNReqStations(iNReqStations); // --------------------------------------------------------------------------- CbmTofMatchReco* tTofMatch = new CbmTofMatchReco(); tTofMatch->SetAlternativeBranchNames(kFALSE); tTofMatch->SetFileIndex(0); tTofMatch->SetMatchMCTracks(kTRUE); // --------------------------------------------------------------------------- CbmTofAnaTestbeam* tTofAnaTestbeam = new CbmTofAnaTestbeam("TOF TestBeam Analysis", 1); tTofAnaTestbeam->SetDut(iDutType); tTofAnaTestbeam->SetDutSm(iDutModule); tTofAnaTestbeam->SetDutRpc(iDutCounter); tTofAnaTestbeam->SetMrpcRef(iMRefType); tTofAnaTestbeam->SetMrpcRefSm(iMRefModule); tTofAnaTestbeam->SetMrpcRefRpc(iMRefCounter); tTofAnaTestbeam->SetMrpcSel2(iSel2Type); tTofAnaTestbeam->SetMrpcSel2Sm(iSel2Module); tTofAnaTestbeam->SetMrpcSel2Rpc(iSel2Counter); tTofAnaTestbeam->SetBeamRefSmType(iBRefType); tTofAnaTestbeam->SetBeamRefSmId(iBRefModule); tTofAnaTestbeam->SetBeamRefRpc(iBRefCounter); tTofAnaTestbeam->SetCorMode(iAnaCorMode); tTofAnaTestbeam->SetCalParFileName(tInputAnaCalibFile); tTofAnaTestbeam->SetCalOutFileName(tOutputAnaCalibFile); tTofAnaTestbeam->SetMonteCarloComparison(bAnalysisMCQA); tTofAnaTestbeam->SetGhostTrackHitQuota(0.7); // tTofAnaTestbeam->SetDelayMCPoints(!bIdealClustering); tTofAnaTestbeam->SetAttachDutHitToTracklet(bFinalRun); if(bSimData) { if(!bHeavyIonCollisions && bIdealCalibration) { tTofAnaTestbeam->SetDXMean(0.); tTofAnaTestbeam->SetDYMean(0.); tTofAnaTestbeam->SetDTMean(0.); tTofAnaTestbeam->SetDXWidth(0.7); tTofAnaTestbeam->SetDYWidth(1.0); tTofAnaTestbeam->SetDTWidth(0.1); tTofAnaTestbeam->SetMulDMax(1); tTofAnaTestbeam->SetMul0Max(1); tTofAnaTestbeam->SetMul4Max(1); // tTofAnaTestbeam->SetMulDMax(10); // tTofAnaTestbeam->SetMul0Max(10); // tTofAnaTestbeam->SetMul4Max(10); tTofAnaTestbeam->SetDTD4MAX(100.); tTofAnaTestbeam->SetCh4Sel(0.); tTofAnaTestbeam->SetDCh4Sel(100.); tTofAnaTestbeam->SetPosY4SelOff(0.); tTofAnaTestbeam->SetPosY4Sel(10.); // tTofAnaTestbeam->SetPosY4Sel(0.5*dScaleFactor); tTofAnaTestbeam->SetDTDia(0.); tTofAnaTestbeam->SetHitDistMin(30.); tTofAnaTestbeam->SetChS2Sel(0.); tTofAnaTestbeam->SetDChS2Sel(100.); tTofAnaTestbeam->SetPosYS2SelOff(0.); tTofAnaTestbeam->SetPosYS2Sel(10.); // tTofAnaTestbeam->SetPosYS2Sel(0.5); tTofAnaTestbeam->SetTShift(0.); tTofAnaTestbeam->SetSel2TOff(0.); tTofAnaTestbeam->SetTOffD4(0.); tTofAnaTestbeam->SetChi2Lim(10000.); tTofAnaTestbeam->SetChi2Lim2(10000.); // tTofAnaTestbeam->SetChi2Lim(5.); // tTofAnaTestbeam->SetChi2Lim2(2.); tTofAnaTestbeam->SetDutX(0.); tTofAnaTestbeam->SetDutY(0.); tTofAnaTestbeam->SetDutDX(100.); tTofAnaTestbeam->SetDutDY(100.); // tTofAnaTestbeam->SetChi2LimFit(10.);// cf. fChiMaxAccept tTofAnaTestbeam->SetSIGLIM(10000.); // TODO: fdChi2Lim tTofAnaTestbeam->SetSIGX(0.7); // fdDXWidth tTofAnaTestbeam->SetSIGY(1.0); // fdDYWidth tTofAnaTestbeam->SetSIGT(0.1); // fdDTWidth tTofAnaTestbeam->SetBestSelTrackletOnly(kTRUE); tTofAnaTestbeam->SetMinMCRefTrackPoints(4); // tTofAnaTestbeam->SetMaxMCRefTracks(1); tTofAnaTestbeam->SetMCSIGLIM(10000.); tTofAnaTestbeam->SetMCSIGX(0.7); tTofAnaTestbeam->SetMCSIGY(1.0); tTofAnaTestbeam->SetMCSIGT(0.1); if(bFinalRun) { tTofAnaTestbeam->SetUseSigCalib(kTRUE); } } if(bHeavyIonCollisions && bIdealCalibration) { tTofAnaTestbeam->SetDXMean(0.); tTofAnaTestbeam->SetDYMean(0.); tTofAnaTestbeam->SetDTMean(0.); tTofAnaTestbeam->SetDXWidth(0.3); tTofAnaTestbeam->SetDYWidth(1.3); tTofAnaTestbeam->SetDTWidth(0.1); tTofAnaTestbeam->SetMulDMax(1); tTofAnaTestbeam->SetMul0Max(0); tTofAnaTestbeam->SetMul4Max(10); tTofAnaTestbeam->SetDTD4MAX(6.); tTofAnaTestbeam->SetCh4Sel(0.); tTofAnaTestbeam->SetDCh4Sel(100.); tTofAnaTestbeam->SetPosY4SelOff(0.); tTofAnaTestbeam->SetPosY4Sel(10.); // tTofAnaTestbeam->SetPosY4Sel(0.5*dScaleFactor); tTofAnaTestbeam->SetDTDia(0.); tTofAnaTestbeam->SetHitDistMin(30.); tTofAnaTestbeam->SetChS2Sel(0.); tTofAnaTestbeam->SetDChS2Sel(100.); tTofAnaTestbeam->SetPosYS2SelOff(0.); tTofAnaTestbeam->SetPosYS2Sel(10.); // tTofAnaTestbeam->SetPosYS2Sel(0.5); tTofAnaTestbeam->SetTShift(0.); tTofAnaTestbeam->SetSel2TOff(0.); tTofAnaTestbeam->SetTOffD4(0.); tTofAnaTestbeam->SetChi2Lim(10.); // tTofAnaTestbeam->SetChi2Lim(10000.); tTofAnaTestbeam->SetChi2Lim2(2.); tTofAnaTestbeam->SetDutX(0.); tTofAnaTestbeam->SetDutY(0.); tTofAnaTestbeam->SetDutDX(100.); tTofAnaTestbeam->SetDutDY(100.); tTofAnaTestbeam->SetChi2LimFit(10.);// cf. fChiMaxAccept tTofAnaTestbeam->SetSIGLIM(10.); // TODO: fdChi2Lim // tTofAnaTestbeam->SetSIGLIM(10000.); tTofAnaTestbeam->SetSIGX(0.3); // fdDXWidth tTofAnaTestbeam->SetSIGY(1.3); // fdDYWidth tTofAnaTestbeam->SetSIGT(0.1); // fdDTWidth tTofAnaTestbeam->SetBestSelTrackletOnly(kTRUE); tTofAnaTestbeam->SetMinMCRefTrackPoints(4); // tTofAnaTestbeam->SetMaxMCRefTracks(1); tTofAnaTestbeam->SetMCSIGLIM(10.); // tTofAnaTestbeam->SetMCSIGLIM(2.1); tTofAnaTestbeam->SetMCSIGX(0.3); tTofAnaTestbeam->SetMCSIGY(1.3); tTofAnaTestbeam->SetMCSIGT(0.1); if(bFinalRun) { tTofAnaTestbeam->SetUseSigCalib(kTRUE); } } switch(iMRef) { case 921: switch(iDut) { case 901: if(bHeavyIonCollisions) { if(bIdealCalibration) { if(bIdealClustering) { } else { tTofAnaTestbeam->SetDTMean(-1.667); tTofAnaTestbeam->SetHitDistAv(32.92); } } else { if(bIdealClustering) { } else { } } } else { if(bIdealCalibration) { if(bIdealClustering) { tTofAnaTestbeam->SetDTMean(-1.598); tTofAnaTestbeam->SetHitDistAv(47.92); } else { tTofAnaTestbeam->SetDTMean(-1.598); tTofAnaTestbeam->SetHitDistAv(47.92); } } else { if(bIdealClustering) { } else { } } } break; default: break; } switch(iBRef) { case 510: if(bHeavyIonCollisions) { if(bIdealCalibration) { if(bIdealClustering) { } else { tTofAnaTestbeam->SetTShift(-14.459); tTofAnaTestbeam->SetTOffD4(14.290); } } else { if(bIdealClustering) { } else { } } } else { if(bIdealCalibration) { if(bIdealClustering) { tTofAnaTestbeam->SetTShift(-14.383); tTofAnaTestbeam->SetTOffD4(14.383); } else { tTofAnaTestbeam->SetTShift(-15.08); tTofAnaTestbeam->SetTOffD4(16.08); } } else { if(bIdealClustering) { } else { } } } break; default: break; } switch(iSel2) { case 400: if(bHeavyIonCollisions) { if(bIdealCalibration) { if(bIdealClustering) { } else { tTofAnaTestbeam->SetSel2TOff(-2.252); } } else { if(bIdealClustering) { } else { } } } else { if(bIdealCalibration) { if(bIdealClustering) { tTofAnaTestbeam->SetSel2TOff(-2.2399); } else { tTofAnaTestbeam->SetSel2TOff(-2.865); } } else { if(bIdealClustering) { } else { } } } break; default: break; } break; default: break; } } else { tTofAnaTestbeam->SetDXMean(0.); tTofAnaTestbeam->SetDYMean(0.); tTofAnaTestbeam->SetDTMean(0.); tTofAnaTestbeam->SetDXWidth(0.3); tTofAnaTestbeam->SetDYWidth(1.3); tTofAnaTestbeam->SetDTWidth(0.1); tTofAnaTestbeam->SetMulDMax(1); tTofAnaTestbeam->SetMul0Max(0); tTofAnaTestbeam->SetMul4Max(10); tTofAnaTestbeam->SetDTD4MAX(6.); tTofAnaTestbeam->SetCh4Sel(0.); tTofAnaTestbeam->SetDCh4Sel(100.); tTofAnaTestbeam->SetPosY4SelOff(0.); tTofAnaTestbeam->SetPosY4Sel(10.); // tTofAnaTestbeam->SetPosY4Sel(0.5*dScaleFactor); tTofAnaTestbeam->SetDTDia(0.); tTofAnaTestbeam->SetHitDistMin(30.); tTofAnaTestbeam->SetChS2Sel(0.); tTofAnaTestbeam->SetDChS2Sel(100.); tTofAnaTestbeam->SetPosYS2SelOff(0.); tTofAnaTestbeam->SetPosYS2Sel(10.); // tTofAnaTestbeam->SetPosYS2Sel(0.5); tTofAnaTestbeam->SetTShift(0.); tTofAnaTestbeam->SetSel2TOff(0.); tTofAnaTestbeam->SetTOffD4(0.); tTofAnaTestbeam->SetChi2Lim(10.); tTofAnaTestbeam->SetChi2Lim2(2.); tTofAnaTestbeam->SetDutX(0.); tTofAnaTestbeam->SetDutY(0.); tTofAnaTestbeam->SetDutDX(100.); tTofAnaTestbeam->SetDutDY(100.); tTofAnaTestbeam->SetChi2LimFit(10.);// cf. fChiMaxAccept tTofAnaTestbeam->SetSIGLIM(10.); // TODO: fdChi2Lim tTofAnaTestbeam->SetSIGX(0.3); // fdDXWidth tTofAnaTestbeam->SetSIGY(1.3); // fdDYWidth tTofAnaTestbeam->SetSIGT(0.1); // fdDTWidth tTofAnaTestbeam->SetBestSelTrackletOnly(kTRUE); if(bFinalRun) { tTofAnaTestbeam->SetUseSigCalib(kTRUE); } switch(iMRef) { case 921: switch(iDut) { case 901: //TODO: tTofAnaTestbeam->SetDTMean(-1.598); //TODO: tTofAnaTestbeam->SetHitDistAv(32.92); break; case 920: //TODO: tTofAnaTestbeam->SetDTMean(-0.149); //TODO: tTofAnaTestbeam->SetHitDistAv(-11.); break; case 400: //TODO: tTofAnaTestbeam->SetDTMean(-2.917); //TODO: tTofAnaTestbeam->SetHitDistAv(53.92); break; default: break; } switch(iBRef) { case 510: tTofAnaTestbeam->SetTShift(1.8); tTofAnaTestbeam->SetTOffD4(17.); break; default: break; } switch(iSel2) { case 400: tTofAnaTestbeam->SetSel2TOff(-0.1); break; case 901: //TODO: tTofAnaTestbeam->SetSel2TOff(-1.671); break; default: break; } break; default: break; } } // --------------------------------------------------------------------------- if(bSimData) { tRun->AddTask(tDataManager); } tRun->AddTask(tTofFindTracks); if(bFinalRun) { if(bAnalysisMCQA) { tRun->AddTask(tTofMatch); } tRun->AddTask(tTofAnaTestbeam); } // --------------------------------------------------------------------------- FairRuntimeDb* tRuntimeDb = tRun->GetRuntimeDb(); FairParAsciiFileIo* tParIo1 = new FairParAsciiFileIo(); tParIo1->open(tParFileList, "in"); tRuntimeDb->setFirstInput(tParIo1); // --------------------------------------------------------------------------- std::cout << "-I- ana_trks: initializing run..." << std::endl; tRun->Init(); std::cout << "-I- ana_trks: starting run..." << std::endl; tRun->Run(0, iNEvents); // --------------------------------------------------------------------------- gROOT->LoadMacro((tMacroDir + "/save_hst.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_over_MatD4sel.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_over_Mat04D4best.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_eff_XY.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_calib_trk.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_TIS.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_over_trk.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_XY_trk.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_pull_trk.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_Eff_DTLH.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_Eff_XY.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_Eff_TIS.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_Dut_Res.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_over_MCEvent.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_over_MCSel.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_over_MCHitSel.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_over_MCTrkSel.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_over_MCPVReco.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_over_MCTrkRes.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_over_MCReco.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_over_MCCounter.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_over_SelTypes.C").Data()); gROOT->LoadMacro((tMacroDir + "/pl_all_SelTypes.C").Data()); gInterpreter->ProcessLine("save_hst(\"" + tHistoFile + "\", kTRUE)"); if(bFinalRun) { gInterpreter->ProcessLine("pl_over_MatD4sel()"); gInterpreter->ProcessLine("pl_over_Mat04D4best(1)"); gInterpreter->ProcessLine("pl_eff_XY()"); gInterpreter->ProcessLine("pl_TIS()"); gInterpreter->ProcessLine(Form("pl_Eff_DTLH(%d%d%d, 0., 1., \"\")", iDutType, iDutModule, iDutCounter)); gInterpreter->ProcessLine(Form("pl_Eff_XY(%d%d%d, 0., 1., \"\")", iDutType, iDutModule, iDutCounter)); gInterpreter->ProcessLine(Form("pl_Eff_TIS(%d%d%d, 0., 1., \"\")", iDutType, iDutModule, iDutCounter)); gInterpreter->ProcessLine(Form("pl_Dut_Res(%d%d%d, \"\")", iDutType, iDutModule, iDutCounter)); if(bAnalysisMCQA) { gInterpreter->ProcessLine(Form("pl_over_MCEvent(%f)", dTyMean)); gInterpreter->ProcessLine("pl_over_MCSel()"); gInterpreter->ProcessLine("pl_over_MCHitSel()"); gInterpreter->ProcessLine("pl_over_MCTrkSel()"); gInterpreter->ProcessLine("pl_over_MCPVReco()"); gInterpreter->ProcessLine("pl_over_MCTrkRes()"); gInterpreter->ProcessLine("pl_over_MCReco()"); gInterpreter->ProcessLine("pl_over_MCCounter(5, 1, 0)"); gInterpreter->ProcessLine("pl_over_MCCounter(4, 0, 0)"); gInterpreter->ProcessLine("pl_over_MCCounter(9, 0, 1)"); gInterpreter->ProcessLine("pl_over_MCCounter(9, 2, 0)"); gInterpreter->ProcessLine("pl_over_MCCounter(9, 2, 1)"); } gInterpreter->ProcessLine("pl_over_SelTypes()"); gInterpreter->ProcessLine("pl_all_SelTypes()"); } gInterpreter->ProcessLine("pl_calib_trk()"); gInterpreter->ProcessLine(Form("pl_over_trk(%d)", iNStations)); gInterpreter->ProcessLine(Form("pl_XY_trk(%d, 0.5, 0.)", iNStations)); gInterpreter->ProcessLine(Form("pl_pull_trk(%d, %d, 1)", iNStations, 0)); gInterpreter->ProcessLine(Form("pl_pull_trk(%d, %d, 1)", iNStations, 1)); gInterpreter->ProcessLine(Form("pl_pull_trk(%d, %d, 1)", iNStations, 3)); gInterpreter->ProcessLine(Form("pl_pull_trk(%d, %d, 1)", iNStations, 4)); // --------------------------------------------------------------------------- tTimer.Stop(); Double_t dRealTime = tTimer.RealTime(); Double_t dCPUTime = tTimer.CpuTime(); std::cout << std::endl << std::endl; std::cout << "Macro finished successfully." << std::endl; std::cout << "Real time " << dRealTime << " s, CPU time " << dCPUTime << " s" << std::endl; std::cout << std::endl; // --------------------------------------------------------------------------- // Extract the maximal used memory an add is as Dart measurement // This line is filtered by CTest and the value send to CDash FairSystemInfo tSysInfo; Float_t fMaxMemory = tSysInfo.GetMaxMemory(); std::cout << ""; std::cout << fMaxMemory; std::cout << "" << endl; Float_t fCPUUsage = dCPUTime/dRealTime; std::cout << ""; std::cout << fCPUUsage; std::cout << "" << endl; /* FairMonitor::GetMonitor()->Print(); */ // --------------------------------------------------------------------------- FairRootManager::Instance()->CloseSink(); // --------------------------------------------------------------------------- RemoveGeoManager(); // --------------------------------------------------------------------------- }