From 1940ab472ee676c47f63ae8c8754166efbfc8923 Mon Sep 17 00:00:00 2001 From: "s.zharko@gsi.de" <s.zharko@gsi.de> Date: Wed, 15 Jun 2022 18:23:52 +0200 Subject: [PATCH] L1: tracking interfaces: the interface classes were moved to the '$VMCWORKDIR/core/detector/' directory --- .../base}/CbmTrackingDetectorInterfaceBase.h | 0 core/detectors/much/CMakeLists.txt | 4 +- core/detectors/much/CbmMuchBaseLinkDef.h | 1 + .../much}/CbmMuchTrackingInterface.cxx | 66 +------- .../much}/CbmMuchTrackingInterface.h | 93 +++++------ core/detectors/sts/CMakeLists.txt | 2 + core/detectors/sts/CbmStsBaseLinkDef.h | 1 + .../sts}/CbmStsTrackingInterface.cxx | 91 +---------- .../detectors/sts}/CbmStsTrackingInterface.h | 101 +++++++----- core/detectors/trd/CMakeLists.txt | 1 + core/detectors/trd/CbmTrdBaseLinkDef.h | 1 + .../trd}/CbmTrdTrackingInterface.cxx | 60 -------- .../detectors/trd}/CbmTrdTrackingInterface.h | 80 +++++----- mvd/CMakeLists.txt | 1 + mvd/CbmMvdLinkDef.h | 1 + mvd/CbmMvdTrackingInterface.cxx | 61 ++++++++ {reco/KF => mvd}/CbmMvdTrackingInterface.h | 95 +++++++----- reco/KF/CbmMvdTrackingInterface.cxx | 144 ------------------ reco/KF/CbmTrackingDetectorInterfaceInit.cxx | 1 - reco/KF/CbmTrackingDetectorInterfaceInit.h | 3 +- reco/KF/KF.cmake | 9 -- reco/KF/KFLinkDef.h | 4 - 22 files changed, 278 insertions(+), 542 deletions(-) rename {reco/KF => core/base}/CbmTrackingDetectorInterfaceBase.h (100%) rename {reco/KF => core/detectors/much}/CbmMuchTrackingInterface.cxx (54%) rename {reco/KF => core/detectors/much}/CbmMuchTrackingInterface.h (84%) rename {reco/KF => core/detectors/sts}/CbmStsTrackingInterface.cxx (52%) rename {reco/KF => core/detectors/sts}/CbmStsTrackingInterface.h (76%) rename {reco/KF => core/detectors/trd}/CbmTrdTrackingInterface.cxx (53%) rename {reco/KF => core/detectors/trd}/CbmTrdTrackingInterface.h (83%) create mode 100644 mvd/CbmMvdTrackingInterface.cxx rename {reco/KF => mvd}/CbmMvdTrackingInterface.h (76%) delete mode 100644 reco/KF/CbmMvdTrackingInterface.cxx diff --git a/reco/KF/CbmTrackingDetectorInterfaceBase.h b/core/base/CbmTrackingDetectorInterfaceBase.h similarity index 100% rename from reco/KF/CbmTrackingDetectorInterfaceBase.h rename to core/base/CbmTrackingDetectorInterfaceBase.h diff --git a/core/detectors/much/CMakeLists.txt b/core/detectors/much/CMakeLists.txt index 6b61a27980..1382adc629 100644 --- a/core/detectors/much/CMakeLists.txt +++ b/core/detectors/much/CMakeLists.txt @@ -5,7 +5,7 @@ Set(INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} - + ${CBMBASE_DIR} ${CBMDATA_DIR} ${CBMDATA_DIR}/much ) @@ -50,6 +50,8 @@ CbmMuchStation.cxx CbmMuchSegmentAuto.cxx CbmMuchSegmentManual.cxx CbmMuchSegmentSector.cxx + +CbmMuchTrackingInterface.cxx ) set(LINKDEF CbmMuchBaseLinkDef.h) diff --git a/core/detectors/much/CbmMuchBaseLinkDef.h b/core/detectors/much/CbmMuchBaseLinkDef.h index 1fe7496029..4bf2eb23d0 100644 --- a/core/detectors/much/CbmMuchBaseLinkDef.h +++ b/core/detectors/much/CbmMuchBaseLinkDef.h @@ -27,6 +27,7 @@ #pragma link C++ class CbmMuchPadRadial + ; #pragma link C++ class CbmMuchPadRectangular + ; #pragma link C++ class CbmMuchStation + ; +#pragma link C++ class CbmMuchTrackingInterface + ; #pragma link C++ class CbmMuchSegmentAuto + ; #pragma link C++ class CbmMuchSegmentManual + ; diff --git a/reco/KF/CbmMuchTrackingInterface.cxx b/core/detectors/much/CbmMuchTrackingInterface.cxx similarity index 54% rename from reco/KF/CbmMuchTrackingInterface.cxx rename to core/detectors/much/CbmMuchTrackingInterface.cxx index ad890d5afc..3aca722b24 100644 --- a/reco/KF/CbmMuchTrackingInterface.cxx +++ b/core/detectors/much/CbmMuchTrackingInterface.cxx @@ -11,20 +11,14 @@ #include "CbmMuchTrackingInterface.h" -#include "CbmMuchModuleGem.h" -#include "CbmMuchPad.h" -#include "CbmMuchStation.h" #include "FairDetector.h" #include "FairRunAna.h" #include <FairLogger.h> -#include "TFile.h" -#include "TMath.h" - ClassImp(CbmMuchTrackingInterface) - CbmMuchTrackingInterface* CbmMuchTrackingInterface::fpInstance = nullptr; +CbmMuchTrackingInterface* CbmMuchTrackingInterface::fpInstance = nullptr; //------------------------------------------------------------------------------------------------------------------------------------- // @@ -40,30 +34,6 @@ CbmMuchTrackingInterface::~CbmMuchTrackingInterface() if (fpInstance == this) { fpInstance = nullptr; } } -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMuchTrackingInterface::GetTimeResolution(int /*stationId*/) const { return 3.9; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMuchTrackingInterface::GetZ(int stationId) const { return GetMuchLayer(stationId)->GetZ(); } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMuchTrackingInterface::GetXmax(int /*stationId*/) const { return 100.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMuchTrackingInterface::GetYmax(int /*stationId*/) const { return 100.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMuchTrackingInterface::GetRmin(int /*stationId*/) const { return 10.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMuchTrackingInterface::GetRmax(int /*stationId*/) const { return 100.; } - //------------------------------------------------------------------------------------------------------------------------------------- // int CbmMuchTrackingInterface::GetNtrackingStations() const @@ -77,39 +47,6 @@ int CbmMuchTrackingInterface::GetNtrackingStations() const return nStations; } -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMuchTrackingInterface::GetThickness(int stationId) const { return GetMuchLayer(stationId)->GetDz(); } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMuchTrackingInterface::GetRadLength(int /*stationId*/) const -{ - return 0; // TODO: Replace with correct value -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMuchTrackingInterface::GetStripsStereoAngleFront(int /*stationId*/) const { return 0.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMuchTrackingInterface::GetStripsStereoAngleBack(int /*stationId*/) const { return TMath::Pi() / 2.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMuchTrackingInterface::GetStripsSpatialRmsFront(int /*stationId*/) const { return 0.35; } - - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMuchTrackingInterface::GetStripsSpatialRmsBack(int /*stationId*/) const { return 0.35; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -bool CbmMuchTrackingInterface::IsTimeInfoProvided(int /*stationId*/) const { return true; } - - //------------------------------------------------------------------------------------------------------------------------------------- // InitStatus CbmMuchTrackingInterface::Init() @@ -145,7 +82,6 @@ InitStatus CbmMuchTrackingInterface::Init() // InitStatus CbmMuchTrackingInterface::ReInit() { - LOG(info) << "\033[1;33mCALL CbmMuchTrackingInterface::ReInit()\033[0m"; this->SetParContainers(); return Init(); } diff --git a/reco/KF/CbmMuchTrackingInterface.h b/core/detectors/much/CbmMuchTrackingInterface.h similarity index 84% rename from reco/KF/CbmMuchTrackingInterface.h rename to core/detectors/much/CbmMuchTrackingInterface.h index bf2095a51c..ed1658aae0 100644 --- a/reco/KF/CbmMuchTrackingInterface.h +++ b/core/detectors/much/CbmMuchTrackingInterface.h @@ -14,9 +14,11 @@ #include "CbmMuchGeoScheme.h" #include "CbmTrackingDetectorInterfaceBase.h" - +#include "CbmMuchModuleGem.h" +#include "CbmMuchPad.h" +#include "CbmMuchStation.h" +#include "TMath.h" #include "FairTask.h" - #include "TString.h" #include <iostream> @@ -49,70 +51,70 @@ public: /// Gets actual number of tracking stations, provided by the current geometry setup int GetNtrackingStations() const; - /// Gets time resolution for a station - /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Time resolution [ns] - double GetTimeResolution(int stationId) const; - - /// Gets z component of the station position - /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Z position of station [cm] - double GetZ(int stationId) const; - - /// Gets max size of a station along the X-axis + /// Gets station radiation length /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Size of station along the X-axis [cm] - double GetXmax(int stationId) const; + /// \return Radiation length [cm] + double GetRadLength(int /*stationId*/) const { return 0; } // TODO: Replace with correct value - /// Gets max size of a station along the Y-axis + /// Gets size of outer radius of station /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Size of station along the Y-axis [cm] - double GetYmax(int stationId) const; + /// \return Size of station outer radius [cm] + double GetRmax(int /*stationId*/) const { return 100.; } /// Gets size of inner radius of station /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) /// \return Size of station inner radius [cm] - double GetRmin(int stationId) const; + double GetRmin(int /*stationId*/) const { return 10.; } - /// Gets size of outer radius of station + /// Gets spatial resolution (RMS) for back strips /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Size of station outer radius [cm] - double GetRmax(int stationId) const; + /// \return Spatial resolution (RMS) for front strips [cm] + double GetStripsSpatialRmsBack(int /*stationId*/) const { return 0.35; } - /// Gets station thickness along the Z-axis + /// Gets spatial resolution (RMS) for front strips /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Station thickness [cm] - double GetThickness(int stationId) const; + /// \return Spatial resolution (RMS) for front strips [cm] + double GetStripsSpatialRmsFront(int /*stationId*/) const { return 0.35; } - /// Gets station radiation length + /// Gets back strips stereo angle /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Radiation length [cm] - double GetRadLength(int stationId) const; + /// \return Absolute stereo angle for back strips [rad] + double GetStripsStereoAngleBack(int /*stationId*/) const { return TMath::Pi() / 2.; } /// Gets front strips stereo angle /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) /// \return Absolute stereo angle for front strips [rad] - double GetStripsStereoAngleFront(int stationId) const; + double GetStripsStereoAngleFront(int /*stationId*/) const { return 0.; } - /// Gets back strips stereo angle + /// Gets station thickness along the Z-axis /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Absolute stereo angle for back strips [rad] - double GetStripsStereoAngleBack(int stationId) const; + /// \return Station thickness [cm] + double GetThickness(int stationId) const { return GetMuchLayer(stationId)->GetDz(); }; - /// Gets spatial resolution (RMS) for front strips + /// Gets time resolution for a station /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Spatial resolution (RMS) for front strips [cm] - double GetStripsSpatialRmsFront(int stationId) const; + /// \return Time resolution [ns] + double GetTimeResolution(int /*stationId*/) const { return 3.9; } - /// Gets spatial resolution (RMS) for back strips + /// Gets max size of a station along the X-axis /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Spatial resolution (RMS) for front strips [cm] - double GetStripsSpatialRmsBack(int stationId) const; + /// \return Size of station along the X-axis [cm] + double GetXmax(int /*stationId*/) const { return 100.; } + + /// Gets max size of a station along the Y-axis + /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) + /// \return Size of station along the Y-axis [cm] + double GetYmax(int /*stationId*/) const { return 100.; } + + /// Gets z component of the station position + /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) + /// \return Z position of station [cm] + double GetZ(int stationId) const { return GetMuchLayer(stationId)->GetZ(); } /// Check if station provides time measurements /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) /// \return Flag: true - station provides time measurements, false - station does not provide time measurements - bool IsTimeInfoProvided(int stationId) const; + bool IsTimeInfoProvided(int /*stationId*/) const { return true; } /// FairTask: sets parameter containers up void SetParContainers(); @@ -124,12 +126,6 @@ public: CbmMuchTrackingInterface& operator=(CbmMuchTrackingInterface&&) = delete; private: - /// Calculates MuCh station ID from tracker station ID - __attribute__((always_inline)) int GetMuchStationId(int stationId) const { return stationId / 3; } - - /// Calculates MuCh layer ID from tracker station ID - __attribute__((always_inline)) int GetMuchLayerId(int stationId) const { return stationId % 3; } - /// Gets pointer to the TRD module /// \param stationId Tracking staton ID /// \return Pointer to the particular CbmTrdParModDigi object @@ -137,6 +133,13 @@ private: { return fGeoScheme->GetLayer(GetMuchStationId(stationId), GetMuchLayerId(stationId)); } + + /// Calculates MuCh layer ID from tracker station ID + __attribute__((always_inline)) int GetMuchLayerId(int stationId) const { return stationId % 3; } + + /// Calculates MuCh station ID from tracker station ID + __attribute__((always_inline)) int GetMuchStationId(int stationId) const { return stationId / 3; } + static CbmMuchTrackingInterface* fpInstance; ///< Instance of the class diff --git a/core/detectors/sts/CMakeLists.txt b/core/detectors/sts/CMakeLists.txt index 9e70d4615d..99baaf2cb8 100644 --- a/core/detectors/sts/CMakeLists.txt +++ b/core/detectors/sts/CMakeLists.txt @@ -25,6 +25,7 @@ CbmStsPhysics.cxx CbmStsSensor.cxx CbmStsSetup.cxx CbmStsStation.cxx +CbmStsTrackingInterface.cxx ) # ----- End of sources --------------------------------- @@ -101,6 +102,7 @@ FILES CbmStsContFact.h CbmStsSensor.h CbmStsSetup.h CbmStsStation.h + CbmStsTrackingInterface.h DESTINATION include ) # --------------------------------------------------------- diff --git a/core/detectors/sts/CbmStsBaseLinkDef.h b/core/detectors/sts/CbmStsBaseLinkDef.h index 032b1a3ce8..d6adf33ccb 100644 --- a/core/detectors/sts/CbmStsBaseLinkDef.h +++ b/core/detectors/sts/CbmStsBaseLinkDef.h @@ -24,6 +24,7 @@ #pragma link C++ class CbmStsSensor + ; #pragma link C++ class CbmStsSetup + ; #pragma link C++ class CbmStsStation + ; +#pragma link C++ class CbmStsTrackingInterface + ; #pragma link C++ enum CbmStsELoss; #pragma link C++ enum CbmStsSensorClass; diff --git a/reco/KF/CbmStsTrackingInterface.cxx b/core/detectors/sts/CbmStsTrackingInterface.cxx similarity index 52% rename from reco/KF/CbmStsTrackingInterface.cxx rename to core/detectors/sts/CbmStsTrackingInterface.cxx index bdc160f4ce..904e476f3e 100644 --- a/reco/KF/CbmStsTrackingInterface.cxx +++ b/core/detectors/sts/CbmStsTrackingInterface.cxx @@ -11,19 +11,13 @@ #include "CbmStsTrackingInterface.h" -#include "CbmStsStation.h" - #include "FairDetector.h" #include "FairRunAna.h" #include <FairLogger.h> -#include "TMath.h" - -#include "L1Def.h" - ClassImp(CbmStsTrackingInterface) - CbmStsTrackingInterface* CbmStsTrackingInterface::fpInstance = nullptr; +CbmStsTrackingInterface* CbmStsTrackingInterface::fpInstance = nullptr; //------------------------------------------------------------------------------------------------------------------------------------- // @@ -39,65 +33,11 @@ CbmStsTrackingInterface::~CbmStsTrackingInterface() if (fpInstance == this) { fpInstance = nullptr; } } -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmStsTrackingInterface::GetTimeResolution(int /*stationId*/) const { return 5.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmStsTrackingInterface::GetZ(int stationId) const -{ - return CbmStsSetup::Instance()->GetStation(stationId)->GetZ(); -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmStsTrackingInterface::GetXmax(int stationId) const -{ - return CbmStsSetup::Instance()->GetStation(stationId)->GetXmax(); -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmStsTrackingInterface::GetYmax(int stationId) const -{ - return CbmStsSetup::Instance()->GetStation(stationId)->GetYmax(); -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmStsTrackingInterface::GetRmin(int /*stationId*/) const { return 0.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmStsTrackingInterface::GetRmax(int stationId) const -{ - return GetXmax(stationId) > GetYmax(stationId) ? GetXmax(stationId) : GetYmax(stationId); -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -int CbmStsTrackingInterface::GetNtrackingStations() const { return CbmStsSetup::Instance()->GetNofStations(); } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmStsTrackingInterface::GetThickness(int stationId) const -{ - return CbmStsSetup::Instance()->GetStation(stationId)->GetSensorD(); -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmStsTrackingInterface::GetRadLength(int stationId) const -{ - return CbmStsSetup::Instance()->GetStation(stationId)->GetRadLength(); -} - //------------------------------------------------------------------------------------------------------------------------------------- // double CbmStsTrackingInterface::GetStripsStereoAngleFront(int stationId) const { - auto station = CbmStsSetup::Instance()->GetStation(stationId); + auto station = GetStsStation(stationId); return station->GetSensorRotation() + station->GetSensorStereoAngle(0) * TMath::Pi() / 180.; } @@ -105,38 +45,14 @@ double CbmStsTrackingInterface::GetStripsStereoAngleFront(int stationId) const // double CbmStsTrackingInterface::GetStripsStereoAngleBack(int stationId) const { - auto station = CbmStsSetup::Instance()->GetStation(stationId); + auto station = GetStsStation(stationId); return station->GetSensorRotation() + station->GetSensorStereoAngle(1) * TMath::Pi() / 180.; } -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmStsTrackingInterface::GetStripsSpatialRmsFront(int stationId) const -{ - auto station = CbmStsSetup::Instance()->GetStation(stationId); - return station->GetSensorPitch(0) / TMath::Sqrt(12.); -} - - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmStsTrackingInterface::GetStripsSpatialRmsBack(int stationId) const -{ - auto station = CbmStsSetup::Instance()->GetStation(stationId); - return station->GetSensorPitch(0) / TMath::Sqrt(12.); -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -bool CbmStsTrackingInterface::IsTimeInfoProvided(int /*stationId*/) const { return true; } - - //------------------------------------------------------------------------------------------------------------------------------------- // InitStatus CbmStsTrackingInterface::Init() { - LOG(info) << "\033[1;33mCALL CbmStsTrackingInterface::Init()\033[0m"; - // Check, if all the necessary parameter containers were found if (!fStsParSetModule) { return kFATAL; } if (!fStsParSetSensor) { return kFATAL; } @@ -156,7 +72,6 @@ InitStatus CbmStsTrackingInterface::Init() // InitStatus CbmStsTrackingInterface::ReInit() { - LOG(info) << "\033[1;33mCALL CbmStsTrackingInterface::ReInit()\033[0m"; this->SetParContainers(); return Init(); } diff --git a/reco/KF/CbmStsTrackingInterface.h b/core/detectors/sts/CbmStsTrackingInterface.h similarity index 76% rename from reco/KF/CbmStsTrackingInterface.h rename to core/detectors/sts/CbmStsTrackingInterface.h index 095990c093..789a855e4b 100644 --- a/reco/KF/CbmStsTrackingInterface.h +++ b/core/detectors/sts/CbmStsTrackingInterface.h @@ -16,9 +16,11 @@ #include "CbmStsParSetSensor.h" #include "CbmStsParSetSensorCond.h" #include "CbmStsSetup.h" +#include "CbmStsStation.h" #include "CbmTrackingDetectorInterfaceBase.h" #include "FairTask.h" +#include "TMath.h" #include <iostream> @@ -44,72 +46,81 @@ public: static CbmStsTrackingInterface* Instance() { return fpInstance; } /// Gets actual number of the tracking stations, provided by the current geometry setup - int GetNtrackingStations() const; - - /// Gets time resolution for a station - /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Time resolution [ns] - double GetTimeResolution(int stationId) const; - - /// Gets z component of the station position - /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Z position of station [cm] - double GetZ(int stationId) const; - - /// Gets max size of a station along the X-axis + int GetNtrackingStations() const { return CbmStsSetup::Instance()->GetNofStations(); } + + /// Gets station radiation length /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Size of station along the X-axis [cm] - double GetXmax(int stationId) const; + /// \return Radiation length [cm] + double GetRadLength(int stationId) const { return GetStsStation(stationId)->GetRadLength(); } - /// Gets max size of a station along the Y-axis + /// Gets size of outer radius of station /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Size of station along the Y-axis [cm] - double GetYmax(int stationId) const; + /// \return Size of station outer radius [cm] + double GetRmax(int stationId) const + { + return GetXmax(stationId) > GetYmax(stationId) ? GetXmax(stationId) : GetYmax(stationId); + } /// Gets size of inner radius of station /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) /// \return Size of station inner radius [cm] - double GetRmin(int stationId) const; - - /// Gets size of outer radius of station + double GetRmin(int /*stationId*/) const { return 0.; } + + /// Gets spatial resolution (RMS) for back strips /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Size of station outer radius [cm] - double GetRmax(int stationId) const; - - /// Gets station thickness along the Z-axis + /// \return Spatial resolution (RMS) for front strips [cm] + double GetStripsSpatialRmsBack(int stationId) const + { + return GetStsStation(stationId)->GetSensorPitch(0) / TMath::Sqrt(12.); + } + + /// Gets spatial resolution (RMS) for front strips /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Station thickness [cm] - double GetThickness(int stationId) const; + /// \return Spatial resolution (RMS) for front strips [cm] + double GetStripsSpatialRmsFront(int stationId) const + { + return GetStsStation(stationId)->GetSensorPitch(0) / TMath::Sqrt(12.); + } - /// Gets station radiation length + /// Gets back strips stereo angle /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Radiation length [cm] - double GetRadLength(int stationId) const; + /// \return Absolute stereo angle for back strips [rad] + double GetStripsStereoAngleBack(int stationId) const; /// Gets front strips stereo angle /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) /// \return Absolute stereo angle for front strips [rad] - double GetStripsStereoAngleFront(int stationId) const; + double GetStripsStereoAngleFront(int stationId) const; + + /// Gets station thickness along the Z-axis + /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) + /// \return Station thickness [cm] + double GetThickness(int stationId) const { return GetStsStation(stationId)->GetSensorD(); } - /// Gets back strips stereo angle + /// Gets time resolution for a station /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Absolute stereo angle for back strips [rad] - double GetStripsStereoAngleBack(int stationId) const; + /// \return Time resolution [ns] + double GetTimeResolution(int /*stationId*/) const { return 5.; } - /// Gets spatial resolution (RMS) for front strips + /// Gets max size of a station along the X-axis /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Spatial resolution (RMS) for front strips [cm] - double GetStripsSpatialRmsFront(int stationId) const; + /// \return Size of station along the X-axis [cm] + double GetXmax(int stationId) const { return GetStsStation(stationId)->GetXmax(); } - /// Gets spatial resolution (RMS) for back strips + /// Gets max size of a station along the Y-axis /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Spatial resolution (RMS) for front strips [cm] - double GetStripsSpatialRmsBack(int stationId) const; + /// \return Size of station along the Y-axis [cm] + double GetYmax(int stationId) const { return GetStsStation(stationId)->GetYmax(); } + + /// Gets z component of the station position + /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) + /// \return Z position of station [cm] + double GetZ(int stationId) const { return GetStsStation(stationId)->GetZ(); } /// Check if station provides time measurements /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) /// \return Flag: true - station provides time measurements, false - station does not provide time measurements - bool IsTimeInfoProvided(int stationId) const; + bool IsTimeInfoProvided(int /*stationId*/) const { return true; } /// FairTask: sets parameter containers up void SetParContainers(); @@ -121,6 +132,14 @@ public: CbmStsTrackingInterface& operator=(CbmStsTrackingInterface&&) = delete; private: + /// Gets pointer to the STS station object + /// \param stationId Tracking staton ID + /// \return Pointer to the particular CbmStsStation object + __attribute__((always_inline)) CbmStsStation* GetStsStation(int stationId) const + { + return CbmStsSetup::Instance()->GetStation(stationId); + } + static CbmStsTrackingInterface* fpInstance; CbmStsParSetSensor* fStsParSetSensor {nullptr}; ///< diff --git a/core/detectors/trd/CMakeLists.txt b/core/detectors/trd/CMakeLists.txt index dd93503742..e17ffbf463 100644 --- a/core/detectors/trd/CMakeLists.txt +++ b/core/detectors/trd/CMakeLists.txt @@ -47,6 +47,7 @@ CbmTrdParModDigi.cxx CbmTrdParModGas.cxx CbmTrdParModGain.cxx CbmTrdParModGeo.cxx +CbmTrdTrackingInterface.cxx #tools CbmTrdGeoHandler.cxx CbmTrdUtils.cxx diff --git a/core/detectors/trd/CbmTrdBaseLinkDef.h b/core/detectors/trd/CbmTrdBaseLinkDef.h index f1cb16ad5c..6e7d7174c0 100644 --- a/core/detectors/trd/CbmTrdBaseLinkDef.h +++ b/core/detectors/trd/CbmTrdBaseLinkDef.h @@ -33,6 +33,7 @@ #pragma link C++ class CbmTrdParModGain + ; #pragma link C++ class CbmTrdParModGeo + ; #pragma link C++ class CbmTrdParModDigi + ; +#pragma link C++ class CbmTrdTrackingInterface + ; //tools #pragma link C++ class CbmTrdGeoHandler + ; #pragma link C++ class CbmTrddEdxUtils + ; diff --git a/reco/KF/CbmTrdTrackingInterface.cxx b/core/detectors/trd/CbmTrdTrackingInterface.cxx similarity index 53% rename from reco/KF/CbmTrdTrackingInterface.cxx rename to core/detectors/trd/CbmTrdTrackingInterface.cxx index db6481a374..71b4de4ddc 100644 --- a/reco/KF/CbmTrdTrackingInterface.cxx +++ b/core/detectors/trd/CbmTrdTrackingInterface.cxx @@ -14,10 +14,7 @@ #include "FairDetector.h" #include "FairRunAna.h" #include <FairLogger.h> - -#include "TFile.h" #include "TGeoManager.h" -#include "TMath.h" #include "TString.h" ClassImp(CbmTrdTrackingInterface) @@ -38,30 +35,6 @@ CbmTrdTrackingInterface::~CbmTrdTrackingInterface() if (fpInstance == this) { fpInstance = nullptr; } } -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmTrdTrackingInterface::GetTimeResolution(int /*stationId*/) const { return 10.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmTrdTrackingInterface::GetZ(int stationId) const { return GetTrdModulePar(stationId)->GetZ(); } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmTrdTrackingInterface::GetXmax(int stationId) const { return GetTrdModulePar(stationId)->GetSizeX(); } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmTrdTrackingInterface::GetYmax(int stationId) const { return GetTrdModulePar(stationId)->GetSizeY(); } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmTrdTrackingInterface::GetRmin(int /*stationId*/) const { return 0.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmTrdTrackingInterface::GetRmax(int stationId) const { return 2. * this->GetXmax(stationId); } - //------------------------------------------------------------------------------------------------------------------------------------- // int CbmTrdTrackingInterface::GetNtrackingStations() const @@ -82,39 +55,6 @@ int CbmTrdTrackingInterface::GetNtrackingStations() const return nTrdLayers; } -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmTrdTrackingInterface::GetThickness(int stationId) const -{ - return 2. * GetTrdModulePar(stationId)->GetSizeZ(); -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmTrdTrackingInterface::GetRadLength(int /*stationId*/) const { return 1.6; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmTrdTrackingInterface::GetStripsStereoAngleFront(int /*stationId*/) const { return 0.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmTrdTrackingInterface::GetStripsStereoAngleBack(int /*stationId*/) const { return TMath::Pi() / 2.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmTrdTrackingInterface::GetStripsSpatialRmsFront(int /*stationId*/) const { return 0.15; } - - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmTrdTrackingInterface::GetStripsSpatialRmsBack(int /*stationId*/) const { return 0.15; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -bool CbmTrdTrackingInterface::IsTimeInfoProvided(int /*stationId*/) const { return true; } - - //------------------------------------------------------------------------------------------------------------------------------------- // InitStatus CbmTrdTrackingInterface::Init() diff --git a/reco/KF/CbmTrdTrackingInterface.h b/core/detectors/trd/CbmTrdTrackingInterface.h similarity index 83% rename from reco/KF/CbmTrdTrackingInterface.h rename to core/detectors/trd/CbmTrdTrackingInterface.h index d07a848d9a..0799a00588 100644 --- a/reco/KF/CbmTrdTrackingInterface.h +++ b/core/detectors/trd/CbmTrdTrackingInterface.h @@ -15,10 +15,8 @@ #include "CbmTrackingDetectorInterfaceBase.h" #include "CbmTrdParModDigi.h" #include "CbmTrdParSetDigi.h" - #include "FairTask.h" - -#include "TString.h" +#include "TMath.h" #include <iostream> #include <vector> @@ -48,70 +46,70 @@ public: /// Gets actual number of tracking stations, provided by the current geometry setup int GetNtrackingStations() const; - /// Gets time resolution for a station + /// Gets station radiation length /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Time resolution [ns] - double GetTimeResolution(int stationId) const; + /// \return Radiation length [cm] + double GetRadLength(int /*stationId*/) const { return 1.6; } - /// Gets z component of the station position + /// Gets size of outer radius of station /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Z position of station [cm] - double GetZ(int stationId) const; + /// \return Size of station outer radius [cm] + double GetRmax(int stationId) const { return 2. * this->GetXmax(stationId); } - /// Gets max size of a station along the X-axis + /// Gets size of inner radius of station /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Size of station along the X-axis [cm] - double GetXmax(int stationId) const; + /// \return Size of station inner radius [cm] + double GetRmin(int /*stationId*/) const { return 0.; } - /// Gets max size of a station along the Y-axis + /// Gets back strips stereo angle /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Size of station along the Y-axis [cm] - double GetYmax(int stationId) const; + /// \return Absolute stereo angle for back strips [rad] + double GetStripsStereoAngleBack(int /*stationId*/) const { return 0.5 * TMath::Pi(); } - /// Gets size of inner radius of station + /// Gets front strips stereo angle /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Size of station inner radius [cm] - double GetRmin(int stationId) const; + /// \return Absolute stereo angle for front strips [rad] + double GetStripsStereoAngleFront(int /*stationId*/) const { return 0.; } - /// Gets size of outer radius of station + /// Gets spatial resolution (RMS) for back strips /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Size of station outer radius [cm] - double GetRmax(int stationId) const; + /// \return Spatial resolution (RMS) for front strips [cm] + double GetStripsSpatialRmsBack(int /*stationId*/) const { return 0.15; } - /// Gets station thickness along the Z-axis + /// Gets spatial resolution (RMS) for front strips /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Station thickness [cm] - double GetThickness(int stationId) const; + /// \return Spatial resolution (RMS) for front strips [cm] + double GetStripsSpatialRmsFront(int /*stationId*/) const { return 0.15; } - /// Gets station radiation length + /// Gets station thickness along the Z-axis /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Radiation length [cm] - double GetRadLength(int stationId) const; + /// \return Station thickness [cm] + double GetThickness(int stationId) const { return 2. * GetTrdModulePar(stationId)->GetSizeZ(); } - /// Gets front strips stereo angle + /// Gets time resolution for a station /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Absolute stereo angle for front strips [rad] - double GetStripsStereoAngleFront(int stationId) const; + /// \return Time resolution [ns] + double GetTimeResolution(int /*stationId*/) const { return 10.; } - /// Gets back strips stereo angle + /// Gets max size of a station along the X-axis /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Absolute stereo angle for back strips [rad] - double GetStripsStereoAngleBack(int stationId) const; + /// \return Size of station along the X-axis [cm] + double GetXmax(int stationId) const { return GetTrdModulePar(stationId)->GetSizeX(); } - /// Gets spatial resolution (RMS) for front strips + /// Gets max size of a station along the Y-axis /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Spatial resolution (RMS) for front strips [cm] - double GetStripsSpatialRmsFront(int stationId) const; + /// \return Size of station along the Y-axis [cm] + double GetYmax(int stationId) const { return GetTrdModulePar(stationId)->GetSizeY(); } - /// Gets spatial resolution (RMS) for back strips + /// Gets z component of the station position /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Spatial resolution (RMS) for front strips [cm] - double GetStripsSpatialRmsBack(int stationId) const; - + /// \return Z position of station [cm] + double GetZ(int stationId) const { return GetTrdModulePar(stationId)->GetZ(); } + /// Check if station provides time measurements /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) /// \return Flag: true - station provides time measurements, false - station does not provide time measurements - bool IsTimeInfoProvided(int stationId) const; + bool IsTimeInfoProvided(int /*stationId*/) const { return true; } /// FairTask: sets parameter containers up void SetParContainers(); diff --git a/mvd/CMakeLists.txt b/mvd/CMakeLists.txt index 18439a5833..7199374d96 100644 --- a/mvd/CMakeLists.txt +++ b/mvd/CMakeLists.txt @@ -72,6 +72,7 @@ set(SRCS CbmMvdSensor.cxx CbmMvdDigiToHit.cxx CbmMvdDigiToHitTB.cxx + CbmMvdTrackingInterface.cxx #OLD CbmMvdClusterfinder.cxx diff --git a/mvd/CbmMvdLinkDef.h b/mvd/CbmMvdLinkDef.h index 2ad2665230..7da6cd1484 100644 --- a/mvd/CbmMvdLinkDef.h +++ b/mvd/CbmMvdLinkDef.h @@ -57,6 +57,7 @@ #pragma link C++ class CbmMvdReadoutSimple + ; #pragma link C++ class CbmMvdReadoutCluster + ; +#pragma link C++ class CbmMvdTrackingInterface + ; //#pragma link C++ class MyG4UniversalFluctuationForSi+; //#pragma link C++ class CbmMvdFindHits+; diff --git a/mvd/CbmMvdTrackingInterface.cxx b/mvd/CbmMvdTrackingInterface.cxx new file mode 100644 index 0000000000..50410b3c0d --- /dev/null +++ b/mvd/CbmMvdTrackingInterface.cxx @@ -0,0 +1,61 @@ +/* Copyright (C) 2016-2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt + SPDX-License-Identifier: GPL-3.0-only + Authors: Sergey Gorbunov, Sergei Zharko [committer] */ + +/*************************************************************************************************** + * @file CbmMvdTrackingInterface.cxx + * @brief Input data and parameters interface from STS subsystem used in L1 tracker (definition) + * @since 31.05.2022 + * @author S.Zharko <s.zharko@gsi.de> + ***************************************************************************************************/ + +#include "CbmMvdTrackingInterface.h" + + +#include "FairDetector.h" +#include "FairRunAna.h" +#include <FairLogger.h> + +ClassImp(CbmMvdTrackingInterface) + +CbmMvdTrackingInterface* CbmMvdTrackingInterface::fpInstance = nullptr; + +//------------------------------------------------------------------------------------------------------------------------------------- +// +CbmMvdTrackingInterface::CbmMvdTrackingInterface() : FairTask("CbmMvdTrackingInterface") +{ + if (!fpInstance) { fpInstance = this; } +} + +//------------------------------------------------------------------------------------------------------------------------------------- +// +CbmMvdTrackingInterface::~CbmMvdTrackingInterface() +{ + if (fpInstance == this) { fpInstance = nullptr; } +} + +//------------------------------------------------------------------------------------------------------------------------------------- +// +InitStatus CbmMvdTrackingInterface::Init() +{ + fMvdStationPar = CbmMvdDetector::Instance()->GetParameterFile(); + + if (!fMvdStationPar) { return kFATAL; } + + return kSUCCESS; +} + +//------------------------------------------------------------------------------------------------------------------------------------- +// +InitStatus CbmMvdTrackingInterface::ReInit() +{ + this->SetParContainers(); + return Init(); +} + +//------------------------------------------------------------------------------------------------------------------------------------- +// +void CbmMvdTrackingInterface::SetParContainers() {} + +//------------------------------------------------------------------------------------------------------------------------------------- +// diff --git a/reco/KF/CbmMvdTrackingInterface.h b/mvd/CbmMvdTrackingInterface.h similarity index 76% rename from reco/KF/CbmMvdTrackingInterface.h rename to mvd/CbmMvdTrackingInterface.h index 9467b25aa4..cf481138dc 100644 --- a/reco/KF/CbmMvdTrackingInterface.h +++ b/mvd/CbmMvdTrackingInterface.h @@ -13,16 +13,15 @@ #define CbmMvdTrackingInterface_h 1 #include "CbmTrackingDetectorInterfaceBase.h" +#include "CbmMvdDetector.h" +#include "CbmMvdStationPar.h" +#include "TMath.h" #include "FairTask.h" #include <iostream> #include <vector> - -class CbmMvdDetector; -class CbmMvdStationPar; - /// Class CbmMvdTrackingInterface is a CbmL1 subtask, which provides necessary methods for L1 tracker /// to access the geometry and dataflow settings. /// @@ -44,72 +43,84 @@ public: static CbmMvdTrackingInterface* Instance() { return fpInstance; } /// Gets actual number of tracking stations, provided by the current geometry setup - int GetNtrackingStations() const; + int GetNtrackingStations() const { return fMvdStationPar->GetStationCount(); } - /// Gets time resolution for a tracking station - /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Time resolution [ns] - double GetTimeResolution(int stationId) const; - - /// Gets z component of the tracking station position - /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Z position of station [cm] - double GetZ(int stationId) const; - - /// Gets max size of a tracking station along the X-axis + /// Gets the tracking station radiation length /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Size of station along the X-axis [cm] - double GetXmax(int stationId) const; + /// \return Radiation length [cm] + double GetRadLength(int stationId) const + { + return fMvdStationPar->GetZThickness(stationId) / (10. * fMvdStationPar->GetZRadThickness(stationId)); + } - /// Gets max size of a tracking station along the Y-axis + /// Gets size of outer radius of a tracking station /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Size of station along the Y-axis [cm] - double GetYmax(int stationId) const; + /// \return Size of station outer radius [cm] + double GetRmax(int stationId) const + { + return std::max(fMvdStationPar->GetHeight(stationId), fMvdStationPar->GetWidth(stationId)); + } /// Gets size of inner radius of a tracking station /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) /// \return Size of station inner radius [cm] - double GetRmin(int stationId) const; + double GetRmin(int stationId) const + { + return std::min(fMvdStationPar->GetBeamHeight(stationId), fMvdStationPar->GetBeamWidth(stationId)); + } - /// Gets size of outer radius of a tracking station + /// Gets spatial resolution (RMS) for back strips /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Size of station outer radius [cm] - double GetRmax(int stationId) const; + /// \return Spatial resolution (RMS) for front strips [cm] + double GetStripsSpatialRmsBack(int stationId) const { return fMvdStationPar->GetYRes(stationId) / 10000.; } - /// Gets the tracking station thickness along the Z-axis + /// Gets spatial resolution (RMS) for front strips /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Station thickness [cm] - double GetThickness(int stationId) const; + /// \return Spatial resolution (RMS) for front strips [cm] + double GetStripsSpatialRmsFront(int stationId) const { return fMvdStationPar->GetXRes(stationId) / 10000.; } - /// Gets the tracking station radiation length + /// Gets back strips stereo angle /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Radiation length [cm] - double GetRadLength(int stationId) const; + /// \return Absolute stereo angle for back strips [rad] + double GetStripsStereoAngleBack(int /*stationId*/) const { return TMath::Pi() / 2.; } /// Gets front strips stereo angle /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) /// \return Absolute stereo angle for front strips [rad] - double GetStripsStereoAngleFront(int stationId) const; + double GetStripsStereoAngleFront(int /*stationId*/) const { return 0.; } + + /// Gets the tracking station thickness along the Z-axis + /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) + /// \return Station thickness [cm] + double GetThickness(int stationId) const + { + return fMvdStationPar->GetZThickness(stationId); + } - /// Gets back strips stereo angle + /// Gets time resolution for a tracking station /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Absolute stereo angle for back strips [rad] - double GetStripsStereoAngleBack(int stationId) const; + /// \return Time resolution [ns] + double GetTimeResolution(int /*stationId*/) const { return 1000.; } - /// Gets spatial resolution (RMS) for front strips + /// Gets max size of a tracking station along the X-axis /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Spatial resolution (RMS) for front strips [cm] - double GetStripsSpatialRmsFront(int stationId) const; + /// \return Size of station along the X-axis [cm] + double GetXmax(int stationId) const { return this->GetRmax(stationId); } - /// Gets spatial resolution (RMS) for back strips + /// Gets max size of a tracking station along the Y-axis /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) - /// \return Spatial resolution (RMS) for front strips [cm] - double GetStripsSpatialRmsBack(int stationId) const; + /// \return Size of station along the Y-axis [cm] + double GetYmax(int stationId) const { return this->GetRmax(stationId); } + + /// Gets z component of the tracking station position + /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) + /// \return Z position of station [cm] + double GetZ(int stationId) const { return fMvdStationPar->GetZPosition(stationId); } /// Check if the detector provides time measurements /// \param stationId Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1]) /// \return Flag: true - station provides time measurements, false - station does not provide time measurements - bool IsTimeInfoProvided(int stationId) const; + bool IsTimeInfoProvided(int /*stationId*/) const { return false; } /// FairTask: sets parameter containers up void SetParContainers(); diff --git a/reco/KF/CbmMvdTrackingInterface.cxx b/reco/KF/CbmMvdTrackingInterface.cxx deleted file mode 100644 index 0ceebb2360..0000000000 --- a/reco/KF/CbmMvdTrackingInterface.cxx +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright (C) 2016-2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt - SPDX-License-Identifier: GPL-3.0-only - Authors: Sergey Gorbunov, Sergei Zharko [committer] */ - -/*************************************************************************************************** - * @file CbmMvdTrackingInterface.cxx - * @brief Input data and parameters interface from STS subsystem used in L1 tracker (definition) - * @since 31.05.2022 - * @author S.Zharko <s.zharko@gsi.de> - ***************************************************************************************************/ - -#include "CbmMvdTrackingInterface.h" - -#include "CbmMvdDetector.h" -#include "CbmMvdStationPar.h" - -#include "FairDetector.h" -#include "FairRunAna.h" -#include <FairLogger.h> - -#include "TMath.h" - -#include "L1Def.h" - -ClassImp(CbmMvdTrackingInterface) - - CbmMvdTrackingInterface* CbmMvdTrackingInterface::fpInstance = nullptr; - -//------------------------------------------------------------------------------------------------------------------------------------- -// -CbmMvdTrackingInterface::CbmMvdTrackingInterface() : FairTask("CbmMvdTrackingInterface") -{ - if (!fpInstance) { fpInstance = this; } -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -CbmMvdTrackingInterface::~CbmMvdTrackingInterface() -{ - if (fpInstance == this) { fpInstance = nullptr; } -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMvdTrackingInterface::GetTimeResolution(int /*stationId*/) const { return 1000.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMvdTrackingInterface::GetZ(int stationId) const { return fMvdStationPar->GetZPosition(stationId); } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMvdTrackingInterface::GetXmax(int stationId) const { return this->GetRmax(stationId); } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMvdTrackingInterface::GetYmax(int stationId) const { return this->GetRmax(stationId); } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMvdTrackingInterface::GetRmin(int stationId) const -{ - return std::min(fMvdStationPar->GetBeamHeight(stationId), fMvdStationPar->GetBeamWidth(stationId)); -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMvdTrackingInterface::GetRmax(int stationId) const -{ - return std::max(fMvdStationPar->GetHeight(stationId), fMvdStationPar->GetWidth(stationId)); -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -int CbmMvdTrackingInterface::GetNtrackingStations() const { return fMvdStationPar->GetStationCount(); } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMvdTrackingInterface::GetThickness(int stationId) const { return fMvdStationPar->GetZThickness(stationId); } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMvdTrackingInterface::GetRadLength(int stationId) const -{ - // NOTE: Taken from CbmKF::Init() (S.Zharko) - return fMvdStationPar->GetZThickness(stationId) / (10. * fMvdStationPar->GetZRadThickness(stationId)); -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMvdTrackingInterface::GetStripsStereoAngleFront(int /*stationId*/) const { return 0.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMvdTrackingInterface::GetStripsStereoAngleBack(int /*stationId*/) const { return TMath::Pi() / 2.; } - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMvdTrackingInterface::GetStripsSpatialRmsFront(int stationId) const -{ - return fMvdStationPar->GetXRes(stationId) / 10000.; -} - - -//------------------------------------------------------------------------------------------------------------------------------------- -// -double CbmMvdTrackingInterface::GetStripsSpatialRmsBack(int stationId) const -{ - return fMvdStationPar->GetYRes(stationId) / 10000.; -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -bool CbmMvdTrackingInterface::IsTimeInfoProvided(int /*stationId*/) const { return false; } - - -//------------------------------------------------------------------------------------------------------------------------------------- -// -InitStatus CbmMvdTrackingInterface::Init() -{ - LOG(info) << "\033[1;33mCALL CbmMvdTrackingInterface::Init()\033[0m"; - - fMvdStationPar = CbmMvdDetector::Instance()->GetParameterFile(); - - if (!fMvdStationPar) { return kFATAL; } - - return kSUCCESS; -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -InitStatus CbmMvdTrackingInterface::ReInit() -{ - LOG(info) << "\033[1;33mCALL CbmMvdTrackingInterface::ReInit()\033[0m"; - this->SetParContainers(); - return Init(); -} - -//------------------------------------------------------------------------------------------------------------------------------------- -// -void CbmMvdTrackingInterface::SetParContainers() {} - -//------------------------------------------------------------------------------------------------------------------------------------- -// diff --git a/reco/KF/CbmTrackingDetectorInterfaceInit.cxx b/reco/KF/CbmTrackingDetectorInterfaceInit.cxx index 318f218854..d6b89c08bc 100644 --- a/reco/KF/CbmTrackingDetectorInterfaceInit.cxx +++ b/reco/KF/CbmTrackingDetectorInterfaceInit.cxx @@ -17,7 +17,6 @@ #include "CbmStsTrackingInterface.h" #include "CbmTrdTrackingInterface.h" -#include "FairTask.h" #include <FairLogger.h> ClassImp(CbmTrackingDetectorInterfaceInit) diff --git a/reco/KF/CbmTrackingDetectorInterfaceInit.h b/reco/KF/CbmTrackingDetectorInterfaceInit.h index 04e5cead71..70431151c9 100644 --- a/reco/KF/CbmTrackingDetectorInterfaceInit.h +++ b/reco/KF/CbmTrackingDetectorInterfaceInit.h @@ -12,7 +12,8 @@ #ifndef CbmTrackingDetectorInterfaceInit_h #define CbmTrackingDetectorInterfaceInit_h 1 -class FairTask; +#include "FairTask.h" + class CbmMvdTrackingInterface; class CbmStsTrackingInterface; class CbmMuchTrackingInterface; diff --git a/reco/KF/KF.cmake b/reco/KF/KF.cmake index a218226b8b..083663bc32 100644 --- a/reco/KF/KF.cmake +++ b/reco/KF/KF.cmake @@ -67,10 +67,6 @@ CbmKFUMeasurement.cxx CbmKFVertexInterface.cxx #### Tracker interfaces (will be moved to core/detector/*) ################ -CbmStsTrackingInterface.cxx # TMP: Should be placed to the detector directory! -CbmMvdTrackingInterface.cxx # TMP: Should be placed to the detector directory! -CbmMuchTrackingInterface.cxx # TMP: Should be placed to the detector directory! -CbmTrdTrackingInterface.cxx # TMP: Should be placed to the detector directory! CbmTrackingDetectorInterfaceInit.cxx ########################################################################### @@ -114,11 +110,6 @@ CbmKFUMeasurement.h CbmKFVertexInterface.h #### Tracker interfaces (will be moved to core/detector/*) ################ -CbmStsTrackingInterface.h # TMP: Should be placed to the detector directory! -CbmMvdTrackingInterface.h # TMP: Should be placed to the detector directory! -CbmMuchTrackingInterface.h # TMP: Should be placed to the detector directory! -CbmTrdTrackingInterface.h # TMP: Should be placed to the detector directory! -CbmTrackingDetectorInterfaceBase.h CbmTrackingDetectorInterfaceInit.h ########################################################################### diff --git a/reco/KF/KFLinkDef.h b/reco/KF/KFLinkDef.h index 7f3885f0cf..ac53d37336 100644 --- a/reco/KF/KFLinkDef.h +++ b/reco/KF/KFLinkDef.h @@ -38,10 +38,6 @@ #pragma link C++ class CbmGlobalTrackFitterKF + ; #pragma link C++ class CbmTrackingDetectorInterfaceInit + ; -#pragma link C++ class CbmMvdTrackingInterface + ; -#pragma link C++ class CbmStsTrackingInterface + ; -#pragma link C++ class CbmMuchTrackingInterface + ; -#pragma link C++ class CbmTrdTrackingInterface + ; //KFQA /* #pragma link C++ class CbmKFPartEfficiencies + ; -- GitLab