diff --git a/macro/beamtime/cosy2019/cosy2019_process.C b/macro/beamtime/cosy2019/cosy2019_process.C index c553d67eefe913a5ff1e99acbb4e67e921955709..c2a8c82f284717481f6f916825cd7fe0f7779461 100644 --- a/macro/beamtime/cosy2019/cosy2019_process.C +++ b/macro/beamtime/cosy2019/cosy2019_process.C @@ -8,13 +8,13 @@ // -------------------------------------------------------------------------- -void cosy2019_process( - Int_t nTimeslices = -1, - UInt_t uRunId = 0, - TString outDir = "data", - TString dataSet = "data/cosy2019", // Data set for file names - Bool_t eventMode = kFALSE // Event-by-event mode -) { +void cosy2019_process() { + + Int_t nTimeslices = -1; + TString inFile = "unp_cosy_0025.root"; + TString parFile = "unp_cosy_params_0025.root"; + TString outFile = "0025.rec.root"; + TString geoFile = "sts_hodo_v19a_cosy_geo.root"; // --- Logger settings ---------------------------------------------------- @@ -30,12 +30,12 @@ void cosy2019_process( // ----- In- and output file names ------------------------------------ - TString runId = TString::Format("%04u", uRunId); - TString inFile = outDir + "/unp_cosy_" + runId + ".root"; - if (eventMode) inFile = dataSet + ".event.raw.root"; - TString parFile = outDir + "/unp_cosy_params_" + runId + "_sts.root"; - TString outFile = dataSet + "_" + runId + ".rec.root"; - TString geoFile = dataSet + ".geo.root"; // to be created by a simulation run + //TString runId = TString::Format("%04u", uRunId); + //TString inFile = outDir + "/unp_cosy_" + runId + ".root"; + //if (eventMode) inFile = dataSet + ".event.raw.root"; + //TString parFile = outDir + "/unp_cosy_params_" + runId + "_sts.root"; + //TString outFile = dataSet + "_" + runId + ".rec.root"; + //TString geoFile = dataSet + ".geo.root"; // to be created by a simulation run // ------------------------------------------------------------------------ @@ -52,7 +52,6 @@ void cosy2019_process( // ----- FairRunAna --------------------------------------------------- FairRunAna* run = new FairRunAna(); - CbmStsFindHits* hit = new CbmStsFindHits(); FairFileSource* inputSource = new FairFileSource(inFile); run->SetSource(inputSource); @@ -76,20 +75,67 @@ void cosy2019_process( // ----- Local reconstruction in STS ---------------------------------- - CbmStsReco* stsReco = new CbmStsReco(); - // --- The parameter file for the STS Setup sensors needs to be explicitely set as - // --- 1) By default the CbmStsSetup creates only Stereo sensors with a 58 um pitch - // --- 2) The only place where this can be set is in the init of the CbmStsReco - - // ----- Geometry Tags -------------------------------------------------- - TString sStsHodoGeoPar = "sts_hodo_v19a_cosy.par"; - // ------------------------------------------------------------------------ - stsReco->SetSensorsParFile(sStsHodoGeoPar); - stsReco->SetTimeCutDigisInNs(20); // cluster finder: time cut in ns - stsReco->SetTimeCutClustersInNs(20.); // hit finder: time cut in ns - - run->AddTask(stsReco); - std::cout << "-I- : Added task " << stsReco->GetName() << std::endl; + CbmRecoSts* recoSts = new CbmRecoSts(); + recoSts->SetTimeCutDigisAbs(20); // cluster finder: time cut in ns + recoSts->SetTimeCutClustersAbs(20.); // hit finder: time cut in ns + + // ---- Here we define the sensor parameters since they are not available + // ----- from the runtimeDb.(#hateRuntimeDb) + + // ---- Hodoscope "sensor" + CbmStsParSensor hodoSensPar(CbmStsSensorClass::kDssdOrtho); + hodoSensPar.SetPar(0, 6.5); // extension in x + hodoSensPar.SetPar(1, 6.5); // extension in y + hodoSensPar.SetPar(2, 0.4); // extension in z + hodoSensPar.SetPar(3, 6.4); // active size in y + hodoSensPar.SetPar(4, 64); // number of strips front side + hodoSensPar.SetPar(5, 64); // number of strips back side + hodoSensPar.SetPar(6, 0.1); // strip pitch front side + hodoSensPar.SetPar(7, 0.1); // strip pitch back side + + // ---- STS sensor (DUT) + CbmStsParSensor stsSensPar(CbmStsSensorClass::kDssdStereo); + stsSensPar.SetPar(0, 6.2092); // extension in x + stsSensPar.SetPar(1, 6.2000); // extension in y + stsSensPar.SetPar(2, 0.0300); // extension in z + stsSensPar.SetPar(3, 5.9600); // active size in y + stsSensPar.SetPar(4, 1024); // number of strips front side + stsSensPar.SetPar(5, 1024); // number of strips back side + stsSensPar.SetPar(6, 0.0058); // strip pitch front side + stsSensPar.SetPar(7, 0.0058); // strip pitch back side + stsSensPar.SetPar(8, -7.5); // strip pitch front side + stsSensPar.SetPar(9, 0.0); // strip pitch back side + + // --- Addresses for sensors + // --- They are defined in each station as sensor 1, module 1, halfladderD (2), ladder 1 + Int_t hodo1Address = CbmStsAddress::GetAddress(0, 0, 1, 0, 0); // station 1 + Int_t stsAddress = CbmStsAddress::GetAddress(1, 0, 1, 0, 0); // station 2 + Int_t hodo2Address = CbmStsAddress::GetAddress(2, 0, 1, 0, 0); // station 3 + std::cout << "Hodo 1 address " << std::dec << hodo1Address << " " << std::hex << hodo1Address << std::endl; + std::cout << "STS address " << std::dec << stsAddress << " " << std::hex << stsAddress << std::endl; + std::cout << "Hodo 2 address " << std::dec << hodo2Address << " " << std::hex << hodo2Address << std::endl; + + // --- Now we can define the sensor parameter set and tell recoSts to use it + auto sensorParSet = new CbmStsParSetSensor("CbmStsParSetSensor", + "STS sensor parameters" "cosy2019"); + sensorParSet->SetParSensor(hodo1Address, hodoSensPar); + sensorParSet->SetParSensor(stsAddress, stsSensPar); + sensorParSet->SetParSensor(hodo2Address, hodoSensPar); + recoSts->UseSensorParSet(sensorParSet); + + // --- Next we define the module and ASIC parameters. The same can be used for all sensors. + CbmStsParAsic asicPar(32, 75000., 3000., 5., 800., 1000., 3.9789e-3); + auto modulePar = new CbmStsParModule(2048, 128); + modulePar->SetAllAsics(asicPar); + recoSts->UseModulePar(modulePar); + + // --- We also need the sensor conditions, although they are of no relevance here + // --- without magnetic field (they are used to determine the Lorentz shift). + auto sensorCond = new CbmStsParSensorCond(70., 140., 268., 17.5, 1.); + recoSts->UseSensorCond(sensorCond); + + run->AddTask(recoSts); + std::cout << "-I- : Added task " << recoSts->GetName() << std::endl; // ------------------------------------------------------------------------ diff --git a/macro/beamtime/cosy2019/sts_hodo_v19a_cosy_geo.root b/macro/beamtime/cosy2019/sts_hodo_v19a_cosy_geo.root new file mode 100644 index 0000000000000000000000000000000000000000..0af3858f256e33283e122bc253583bc32fbc0925 Binary files /dev/null and b/macro/beamtime/cosy2019/sts_hodo_v19a_cosy_geo.root differ