/** * \file TrkProcess.cpp * \author Elena Vannuccini */ #include #include using namespace std; /** * Create TrkProcess object, initializing the tracker processing variables at default values */ TrkProcess::TrkProcess(){ idrun = 0; // dbg_mode.SetNone(); get1 = 0; full1 = 0; geth = 0; get2 = 1; gete = 1; getn = 1; extAlgID = 202; standalone = false; frame2 = "root"; frame1 = "root"; frameh = "root"; framee = "root"; outdir = gSystem->WorkingDirectory(); pfolder = "/TrackerFolder"; if (!frame2.CompareTo("root", TString::kIgnoreCase)) ifroot2 = true; else if (!frame2.CompareTo("hbook", TString::kIgnoreCase)) ifroot2 = false; if (!frame1.CompareTo("root", TString::kIgnoreCase)) ifroot1 = true; else if (!frame1.CompareTo("hbook", TString::kIgnoreCase)) ifroot1 = false; if (!frameh.CompareTo("root", TString::kIgnoreCase)) ifrooth = true; else if (!frameh.CompareTo("hbook", TString::kIgnoreCase)) ifrooth = false; file1 = ""; file2 = ""; ostatus = 0; npar = 0; nskip = 0; watch = false; // TrkParams::SetTrackingMode(); // TrkParams::SetPrecisionFactor(); // TrkParams::SetStepMin(); TrkParams::SetMiniDefault(); TrkParams::SetPFA(); }; /** * Create TrkProcess object, initializing the tracker processing variables according to input parameters. * @param run Run ID * @param f2 Pointer to output level2 file */ TrkProcess::TrkProcess(ULong64_t run, TFile *f2){ idrun = run; // DEBUG = false; // VERBOSE = false; // dbg_mode.SetWarning(); get1 = 0; full1 = 0; get2 = 1; geth = 0; gete = 1; getn = 1; extAlgID = 202; standalone = false; frame2 = "root"; frame1 = "root"; frameh = "root"; framee = "root"; pfolder = "/TrackerFolder"; file1 = ""; if(f2->IsOpen()){ file2 = f2->GetPath(); outdir = gSystem->DirName(gSystem->DirName(file2)); // check if the indicated output directory exists FileStat_t t; if( gSystem->GetPathInfo(outdir.Data(),t) )throw -12; }else{ file2 = ""; outdir = gSystem->WorkingDirectory(); }; if (!frame2.CompareTo("root", TString::kIgnoreCase)) ifroot2 = true; else if (!frame2.CompareTo("hbook", TString::kIgnoreCase)) ifroot2 =false; if (!frame1.CompareTo("root", TString::kIgnoreCase)) ifroot1 = true; else if (!frame1.CompareTo("hbook", TString::kIgnoreCase)) ifroot1 =false; if (!frameh.CompareTo("root", TString::kIgnoreCase)) ifrooth = true; else if (!frameh.CompareTo("hbook", TString::kIgnoreCase)) ifrooth =false; ostatus = 0; npar=0; nskip = 0; watch = false; // TrkParams::SetTrackingMode(); // TrkParams::SetPrecisionFactor(); // TrkParams::SetStepMin(); TrkParams::SetMiniDefault(); TrkParams::SetPFA(); }; /** * Set processing variables according to input custom parameters */ int TrkProcess::HandleCustomPar(int ncustom, char *vcustom[]){ for (int i=0; i< ncustom; i++){ cout << "Handling Parameter " << i+1 << " of " << ncustom << ": " << vcustom[i] << endl; // -----------------------------------------------------// if (!strcmp(vcustom[i], "--simu")){ cout << "Setting DarthVader to use Simulated Data\n"; TrkParams::SetSimuFlag(kTRUE); continue; } // -----------------------------------------------------// if (!strcmp(vcustom[i], "-processFolder")){ if (++i >= ncustom) throw -3; pfolder = vcustom[i]; continue; } // -----------------------------------------------------// if (!strcmp(vcustom[i], "--get1") || !strcmp(vcustom[i], "--get-level1") ){ get1 = 1; full1 = 0; continue; } // -----------------------------------------------------// if (!strcmp(vcustom[i], "--get1-full") || !strcmp(vcustom[i], "--get-level1-full") ){ get1 = 1; full1 = 1; continue; } // -----------------------------------------------------// if (!strcmp(vcustom[i], "--geth") || !strcmp(vcustom[i], "--get-hough") ){ geth = 1; continue; } // -----------------------------------------------------// // if (!strcmp(vcustom[i], "--dontget2") ||!strcmp(vcustom[i], "--dontget-level2") ){ // get2 = 0; // gete = 0; // getn = 0; // continue; // } // -----------------------------------------------------// if (!strcmp(vcustom[i], "--dontgete") ||!strcmp(vcustom[i], "--dontget-exttrack") ){ gete = 0; continue; } // -----------------------------------------------------// if (!strcmp(vcustom[i], "-extalg")){ if (++i >= ncustom) throw -3; gete = 1; get2 = 1; extAlgID = atoi(vcustom[i]); continue; } // -----------------------------------------------------// if (!strcmp(vcustom[i], "--dontgetn") ||!strcmp(vcustom[i], "--dontget-nuclei") ){ getn = 0; continue; } // -----------------------------------------------------// if (!strcmp(vcustom[i], "--standalone") || !strcmp(vcustom[i], "-s")){ standalone = true; continue; } // -----------------------------------------------------// if (!strcmp(vcustom[i], "-processFile1")){ if (++i >= ncustom) throw -3; get1 = 1; file1 = vcustom[i]; continue; } // // -----------------------------------------------------// // if (!strcmp(vcustom[i], "-frame1")){ // if (++i >= ncustom)throw -3; // get1 = 1; // frame1 = vcustom[i]; // continue; // } // // -----------------------------------------------------// // if (!strcmp(vcustom[i], "-frame2")){ // if (++i >= ncustom)throw -3; // get2 = 1; // frame2 = vcustom[i]; // continue; // } // // -----------------------------------------------------// // if (!strcmp(vcustom[i], "-framee")){ // if (++i >= ncustom)throw -3; // gete = 1; // framee = vcustom[i]; // continue; // } // -----------------------------------------------------// if (!strcmp(vcustom[i], "-pfa")){ if (++i >= ncustom)throw -3; TrkParams::SetPFA(atoi(vcustom[i])); continue; } // -----------------------------------------------------// if (!strcmp(vcustom[i], "-skip")){ if (++i >= ncustom)throw -3; nskip = atoi(vcustom[i]); continue; } // -----------------------------------------------------// if ( atoi(vcustom[i]) < 0){ if (++i >= ncustom)throw -3; partype[npar]=-1*atoi(vcustom[i-1]); parpath[npar]=vcustom[i]; npar++; continue; } // -----------------------------------------------------// if (!strcmp(vcustom[i], "--verbose") || !strcmp(vcustom[i], "-v")){ TrkParams::SetVerboseMode(); continue; } // -----------------------------------------------------// if (!strcmp(vcustom[i], "--warning") || !strcmp(vcustom[i], "-w")){ TrkParams::SetWarningMode(); continue; } // -----------------------------------------------------// if (!strcmp(vcustom[i], "--help") || !strcmp(vcustom[i], "-h")){ PrintHelp(); return 1; } // -----------------------------------------------------// if (!strcmp(vcustom[i], "--watch") ){ watch = true; continue; } // -----------------------------------------------------// else if (!strcmp(vcustom[i], "--debug") || !strcmp(vcustom[i], "-d")){ TrkParams::SetDebugMode(); continue; }; } if (!frame2.CompareTo("root", TString::kIgnoreCase)) ifroot2 = true; else if (!frame2.CompareTo("hbook", TString::kIgnoreCase)) ifroot2 =false; else throw -201; if (!frame1.CompareTo("root", TString::kIgnoreCase)) ifroot1 = true; else if (!frame1.CompareTo("hbook", TString::kIgnoreCase)) ifroot1 =false; else throw -201; if (!frameh.CompareTo("root", TString::kIgnoreCase)) ifrooth = true; else if (!frameh.CompareTo("hbook", TString::kIgnoreCase)) ifrooth =false; else throw -201; if (!framee.CompareTo("root", TString::kIgnoreCase)) ifroote = true; else if (!framee.CompareTo("hbook", TString::kIgnoreCase)) ifroote =false; else throw -201; if(get1 && !get2)full1=true; ostatus = 0; return 0; }; /** * \brief Process Level0 event * @param l0_event Pointer to an object of the tracker level0 class * Starting from a Level0 object, this routine fills the level0 common, then calls * the fortran routines, which process the event and fill level1 and level2 commons. */ void TrkProcess::ProcessEvent(TrkLevel0 *l0_event){ // fill Level0 common from Level0 object l0_event->GetLevel0Struct(); // process the event Level0->Level1->Level2 int F77err = 0; // reductionflight_(&F77err); if(F77err < 0)throw F77err; // if(get2) analysisflight_(); // ostatus = F77err; }; void TrkProcess::Dump(){ cout << endl; cout << " |-------------------------------------| "<