CbmRoot
Loading...
Searching...
No Matches
CbmMvdRecoSetupUnitFactory.cxx
Go to the documentation of this file.
1/* Copyright (C) 2025 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Sergei Zharko [committer] */
4
9
11
12#include "CbmMvdAddress.h"
13#include "CbmMvdDetector.h"
14#include "CbmMvdSensor.h"
15#include "CbmMvdStationPar.h"
16
17#include <Logger.h>
18
19#include <TString.h>
20
21#include <set>
22#include <sstream>
23#include <utility>
24
28
29
30// ---------------------------------------------------------------------------------------------------------------------
31//
33{
35 if (!res.IsValid()) {
36 LOG(fatal) << "mvd::RecoSetupUnitFactory: creation of a valid MVD reco-setup unit failed";
37 }
38 return res;
39}
40
41// ---------------------------------------------------------------------------------------------------------------------
42//
44{
46 const auto& mvdSensorMap = CbmMvdDetector::Instance()->GetSensorMap();
47 res.resize(mvdSensorMap.size(), -1);
48 for (auto [dummy, pSensor] : mvdSensorMap) {
49 res[pSensor->GetSensorNr()] = pSensor->GetStationNr();
50 }
51 return res;
52}
53
54// ---------------------------------------------------------------------------------------------------------------------
55//
56std::pair<std::vector<GeoVolume>, std::vector<GeoVolume>> RecoSetupUnitFactory::CreateStationVolumes() const
57{
58 // FIXME: Properly get full and active volumes from geometry (see TRD and TOF setup unit factories for example)
59 auto* mvdStationPar = CbmMvdDetector::Instance()->GetParameterFile();
60 assert(mvdStationPar);
61
62 int nStations = mvdStationPar->GetStationCount();
63 std::vector<GeoVolume> fullVolumes;
64 fullVolumes.reserve(nStations);
65 for (int iSt = 0; iSt < nStations; ++iSt) {
66 fullVolumes.emplace_back(-mvdStationPar->GetWidth(iSt), +mvdStationPar->GetWidth(iSt),
67 -mvdStationPar->GetHeight(iSt), +mvdStationPar->GetHeight(iSt),
68 mvdStationPar->GetZPosition(iSt) - 0.5 * mvdStationPar->GetZThickness(iSt),
69 mvdStationPar->GetZPosition(iSt) + 0.5 * mvdStationPar->GetZThickness(iSt));
70 }
71 std::vector<GeoVolume> activeVolumes = fullVolumes;
72
73 return {std::move(fullVolumes), std::move(activeVolumes)};
74}
A factory for the MVD RecoSetupUnit.
std::map< uint32_t, CbmMvdSensor * > & GetSensorMap()
static CbmMvdDetector * Instance()
CbmMvdStationPar * GetParameterFile()
RecoSetupUnit_t Create() const
Creates a reconstruction setup unit.
A representation of a geometrical volume of different tracking stations.
Definition GeoVolume.h:25
A factory class for the MVD RecoSetupUnit.
std::pair< std::vector< algo::GeoVolume >, std::vector< algo::GeoVolume > > CreateStationVolumes() const
Creates full and active volumes of the tracking stations.
StationIdMap_t CreateStationIdMap() const
Fills the tracking station ID mapping.
typename RecoSetupUnit_t::StationIdMap_t StationIdMap_t