/** * Performs reconstruction of simulated events * in the CBM MuCh setup: STS + MUCH. * * @author M.Ryzhinskiy m.ryzhinskiy@gsi.de * @param inFile Input transport file * @param digiFile Input file containing segmentation parameters * @param outFile Output file for reconstruction data * @param nEvents Number of events to process */ void much_hits_gem(TString inFile = "", TString digiFile = "data/much_digi.root", TString outFile = "", Int_t nEvents = 1) { TString inputdir = gSystem->Getenv("VMCWORKDIR"); if (inFile == "") { inFile = "data/Jpsi.auau.25gev.centr.mc.root"; } if (digiFile == "") { digiFile = inputdir + "/parameters/much/much_standard.digi.root"; } if (outFile == "") { outFile = "data/Jpsi.auau.25gev.centr.muchhits.root"; } TString parFile = "data/params.root"; // ======================================================================== // Adjust this part according to your requirements // Verbosity level (0=quiet, 1=event level, 2=track level, 3=debug) Int_t iVerbose = 1; // ---- Load libraries ------------------------------------------------- gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C"); basiclibs(); gSystem->Load("libGeoBase"); gSystem->Load("libParBase"); gSystem->Load("libBase"); gSystem->Load("libCbmBase"); gSystem->Load("libCbmData"); gSystem->Load("libField"); gSystem->Load("libGen"); gSystem->Load("libPassive"); gSystem->Load("libSts"); gSystem->Load("libRich"); gSystem->Load("libTrd"); gSystem->Load("libTof"); gSystem->Load("libEcal"); gSystem->Load("libGlobal"); gSystem->Load("libKF"); gSystem->Load("libL1"); gSystem->Load("libMuch"); // ------------------------------------------------------------------------ // ----- Reconstruction run ------------------------------------------- FairRunAna *fRun= new FairRunAna(); fRun->SetInputFile(inFile); fRun->SetOutputFile(outFile); // ------------------------------------------------------------------------ // ----- Parameter database -------------------------------------------- FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); FairParRootFileIo* parIo1 = new FairParRootFileIo(); parIo1->open(parFile); rtdb->setFirstInput(parIo1); rtdb->setOutput(parIo1); rtdb->saveOutput(); fRun->LoadGeometry(); // ------------------------------------------------------------------------ // --- MuCh digitizer ---------------------------------------------------- // CbmMuchDigitizeSimpleGem* digitize = new CbmMuchDigitizeSimpleGem("MuchDigitizeSimpleGem", digiFile, iVerbose); CbmMuchDigitizeAdvancedGem* digitize = new CbmMuchDigitizeAdvancedGem("MuchDigitizeAdvancedGem", digiFile, iVerbose); digitize->SetSpotRadius(0.15); digitize->SetQThreshold(3); digitize->SetQMaximum(500000); digitize->SetNADCChannels(256); digitize->SetDeadPadsFrac(0.05); fRun->AddTask(digitize); // ------------------------------------------------------------------------ // --- MuCh hit finder --------------------------------------------------- // CbmMuchFindHitsSimpleGem* findHits = new CbmMuchFindHitsSimpleGem("MuchFindHitsSimpleGem", digiFile, iVerbose); CbmMuchFindHitsAdvancedGem* findHits = new CbmMuchFindHitsAdvancedGem("MuchFindHitsAdvancedGem", digiFile, iVerbose); findHits->SetAlgorithm(2); findHits->SetNStations(6); Double_t thresholds[] = {0.1, 0.1, 0.1, 0.1, 0.1, 0.1}; findHits->SetThresholdRatios(thresholds); fRun->AddTask(findHits); // ------------------------------------------------------------------------ // ----- Initialize and run ------------------------------------------- fRun->Init(); fRun->Run(0,nEvents); // ------------------------------------------------------------------------ cout << " Test passed" << endl; cout << " All ok " << endl; exit(0); }