Skip to content
Snippets Groups Projects
Commit 9a06f20f authored by Edward Moyse's avatar Edward Moyse
Browse files

Merge branch 'swp37028' into 'master'

Manual sweep of !37028 (add sTGC calib in NSWCalibTool)

See merge request !37175
parents 876a0f89 640ec53d
6 merge requests!58791DataQualityConfigurations: Modify L1Calo config for web display,!46784MuonCondInterface: Enable thread-safety checking.,!46776Updated LArMonitoring config file for WD to match new files produced using MT,!45405updated ART test cron job,!42417Draft: DIRE and VINCIA Base Fragments for Pythia 8.3,!37175Manual sweep of !37028 (add sTGC calib in NSWCalibTool)
...@@ -30,11 +30,12 @@ namespace NSWCalib { ...@@ -30,11 +30,12 @@ namespace NSWCalib {
}; };
} }
namespace Muon { namespace Muon {
class MM_RawData; class MM_RawData;
class MMPrepData; class MMPrepData;
class STGC_RawData;
class INSWCalibTool : virtual public IAlgTool { class INSWCalibTool : virtual public IAlgTool {
...@@ -44,9 +45,10 @@ namespace Muon { ...@@ -44,9 +45,10 @@ namespace Muon {
public: // interface methods public: // interface methods
virtual StatusCode calibrateClus(const Muon::MMPrepData* prepData, const Amg::Vector3D& globalPos, std::vector<NSWCalib::CalibratedStrip>& calibClus) const = 0; virtual StatusCode calibrateClus(const Muon::MMPrepData* prepRawData, const Amg::Vector3D& globalPos, std::vector<NSWCalib::CalibratedStrip>& calibClus) const = 0;
virtual StatusCode calibrateStrip(const Muon::MM_RawData* mmRawData, NSWCalib::CalibratedStrip& calibStrip) const = 0; virtual StatusCode calibrateStrip(const Muon::MM_RawData* mmRawData, NSWCalib::CalibratedStrip& calibStrip) const = 0;
virtual StatusCode calibrateStrip(const double time, const double charge, const double lorentzAngle, NSWCalib::CalibratedStrip&calibStrip) const = 0; virtual StatusCode calibrateStrip(const double time, const double charge, const double lorentzAngle, NSWCalib::CalibratedStrip&calibStrip) const = 0;
virtual StatusCode calibrateStrip(const Muon::STGC_RawData* sTGCRawData, NSWCalib::CalibratedStrip& calibStrip) const = 0;
virtual StatusCode mmGasProperties(float &vDrift, float &longDiff, float &transDiff, float &interactionDensityMean, float &interactionDensitySigma, TF1* &lorentzAngleFunction) const = 0; virtual StatusCode mmGasProperties(float &vDrift, float &longDiff, float &transDiff, float &interactionDensityMean, float &interactionDensitySigma, TF1* &lorentzAngleFunction) const = 0;
}; };
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "GaudiKernel/SystemOfUnits.h" #include "GaudiKernel/SystemOfUnits.h"
#include "GaudiKernel/PhysicalConstants.h" #include "GaudiKernel/PhysicalConstants.h"
#include "MuonReadoutGeometry/MMReadoutElement.h" #include "MuonReadoutGeometry/MMReadoutElement.h"
#include "MuonReadoutGeometry/sTgcReadoutElement.h"
namespace { namespace {
static constexpr double const& toRad = M_PI/180; static constexpr double const& toRad = M_PI/180;
...@@ -138,6 +139,8 @@ StatusCode Muon::NSWCalibTool::calibrateClus(const Muon::MMPrepData* prepData, c ...@@ -138,6 +139,8 @@ StatusCode Muon::NSWCalibTool::calibrateClus(const Muon::MMPrepData* prepData, c
return StatusCode::SUCCESS; return StatusCode::SUCCESS;
} }
StatusCode Muon::NSWCalibTool::calibrateStrip(const double time, const double charge, const double lorentzAngle, NSWCalib::CalibratedStrip& calibStrip) const { StatusCode Muon::NSWCalibTool::calibrateStrip(const double time, const double charge, const double lorentzAngle, NSWCalib::CalibratedStrip& calibStrip) const {
calibStrip.charge = charge; calibStrip.charge = charge;
calibStrip.time = time; calibStrip.time = time;
...@@ -153,6 +156,7 @@ StatusCode Muon::NSWCalibTool::calibrateStrip(const double time, const double ch ...@@ -153,6 +156,7 @@ StatusCode Muon::NSWCalibTool::calibrateStrip(const double time, const double ch
return StatusCode::SUCCESS; return StatusCode::SUCCESS;
} }
StatusCode Muon::NSWCalibTool::calibrateStrip(const Muon::MM_RawData* mmRawData, NSWCalib::CalibratedStrip& calibStrip) const StatusCode Muon::NSWCalibTool::calibrateStrip(const Muon::MM_RawData* mmRawData, NSWCalib::CalibratedStrip& calibStrip) const
{ {
Identifier rdoId = mmRawData->identify(); Identifier rdoId = mmRawData->identify();
...@@ -178,6 +182,28 @@ StatusCode Muon::NSWCalibTool::calibrateStrip(const Muon::MM_RawData* mmRawData, ...@@ -178,6 +182,28 @@ StatusCode Muon::NSWCalibTool::calibrateStrip(const Muon::MM_RawData* mmRawData,
return StatusCode::SUCCESS; return StatusCode::SUCCESS;
} }
StatusCode Muon::NSWCalibTool::calibrateStrip(const Muon::STGC_RawData* sTGCRawData, NSWCalib::CalibratedStrip& calibStrip) const
{
Identifier rdoId = sTGCRawData->identify();
// MuonDetectorManager from the conditions store
SG::ReadCondHandle<MuonGM::MuonDetectorManager> muDetMgrHandle{m_muDetMgrKey};
const MuonGM::MuonDetectorManager* muDetMgr = muDetMgrHandle.cptr();
//get globalPos
Amg::Vector3D globalPos;
const MuonGM::sTgcReadoutElement* detEl = muDetMgr->getsTgcReadoutElement(rdoId);
detEl->stripGlobalPosition(rdoId,globalPos);
calibStrip.charge =sTGCRawData->charge();
calibStrip.time = sTGCRawData->time() - globalPos.norm() * reciprocalSpeedOfLight + m_timeOffset;
calibStrip.identifier = sTGCRawData->identify();
return StatusCode::SUCCESS;
}
double Muon::NSWCalibTool::pdoToCharge(const int pdoCounts, const Identifier& stripID) const { double Muon::NSWCalibTool::pdoToCharge(const int pdoCounts, const Identifier& stripID) const {
double charge = 0; double charge = 0;
if (m_idHelperSvc->isMM(stripID)){ if (m_idHelperSvc->isMM(stripID)){
......
...@@ -4,23 +4,24 @@ ...@@ -4,23 +4,24 @@
#ifndef NSWCalibTool_h #ifndef NSWCalibTool_h
#define NSWCalibTool_h #define NSWCalibTool_h
#include <map>
#include <string>
#include "NSWCalibTools/INSWCalibTool.h" #include "NSWCalibTools/INSWCalibTool.h"
#include "AthenaBaseComps/AthAlgTool.h" #include "AthenaBaseComps/AthAlgTool.h"
#include "GaudiKernel/ServiceHandle.h" #include "GaudiKernel/ServiceHandle.h"
#include "MuonIdHelpers/IMuonIdHelperSvc.h" #include "MuonIdHelpers/IMuonIdHelperSvc.h"
#include "MuonPrepRawData/MMPrepData.h" #include "MuonPrepRawData/MMPrepData.h"
#include "MuonRDO/MM_RawData.h" #include "MuonRDO/MM_RawData.h"
#include "MuonRDO/STGC_RawData.h"
#include "StoreGate/ReadCondHandleKey.h" #include "StoreGate/ReadCondHandleKey.h"
#include "MuonReadoutGeometry/MuonDetectorManager.h" #include "MuonReadoutGeometry/MuonDetectorManager.h"
#include "MagFieldConditions/AtlasFieldCacheCondObj.h" #include "MagFieldConditions/AtlasFieldCacheCondObj.h"
#include "TRandom3.h" #include "TRandom3.h"
#include "TTree.h" #include "TTree.h"
#include "TF1.h"
#include <string>
#include <vector>
namespace Muon { namespace Muon {
...@@ -33,8 +34,9 @@ namespace Muon { ...@@ -33,8 +34,9 @@ namespace Muon {
virtual ~NSWCalibTool() = default; virtual ~NSWCalibTool() = default;
virtual StatusCode calibrateClus(const Muon::MMPrepData* prepData, const Amg::Vector3D& globalPos, std::vector<NSWCalib::CalibratedStrip>& calibClus) const override; virtual StatusCode calibrateClus(const Muon::MMPrepData* prepData, const Amg::Vector3D& globalPos, std::vector<NSWCalib::CalibratedStrip>& calibClus) const override;
virtual StatusCode calibrateStrip(const double time, const double charge, const double lorentzAngle, NSWCalib::CalibratedStrip& calibStrip) const override; virtual StatusCode calibrateStrip(const double time, const double charge, const double lorentzAngle, NSWCalib::CalibratedStrip& calibStrip) const override;
virtual StatusCode calibrateStrip(const Muon::MM_RawData* mmRawData, NSWCalib::CalibratedStrip& calibStrip) const override; virtual StatusCode calibrateStrip(const Muon::MM_RawData* mmRawData, NSWCalib::CalibratedStrip& calibStrip) const override;
virtual StatusCode calibrateStrip(const Muon::STGC_RawData* sTGCRawData, NSWCalib::CalibratedStrip& calibStrip) const override;
double pdoToCharge(const int pdoCounts, const Identifier& stripID) const; double pdoToCharge(const int pdoCounts, const Identifier& stripID) const;
int chargeToPdo(const float charge, const Identifier& stripID) const; int chargeToPdo(const float charge, const Identifier& stripID) const;
...@@ -43,6 +45,7 @@ namespace Muon { ...@@ -43,6 +45,7 @@ namespace Muon {
virtual StatusCode finalize() override; virtual StatusCode finalize() override;
StatusCode mmGasProperties(float &vDrift, float &longDiff, float &transDiff, float &interactionDensityMean, float &interactionDensitySigma, TF1* &lorentzAngleFunction) const override; StatusCode mmGasProperties(float &vDrift, float &longDiff, float &transDiff, float &interactionDensityMean, float &interactionDensitySigma, TF1* &lorentzAngleFunction) const override;
private: private:
ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}; ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
......
...@@ -2,19 +2,13 @@ ...@@ -2,19 +2,13 @@
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/ */
/***************************************************************************
sTgc Readout Element properties
-----------------------------------------
***************************************************************************/
#ifndef MUONGEOMODEL_STGCREADOUTELEMENT_H #ifndef MUONGEOMODEL_STGCREADOUTELEMENT_H
# define MUONGEOMODEL_STGCREADOUTELEMENT_H #define MUONGEOMODEL_STGCREADOUTELEMENT_H
#include "MuonReadoutGeometry/MuonClusterReadoutElement.h" #include "MuonReadoutGeometry/MuonClusterReadoutElement.h"
#include "MuonReadoutGeometry/MuonDetectorManager.h" #include "MuonReadoutGeometry/MuonDetectorManager.h"
#include "MuonReadoutGeometry/MuonChannelDesign.h" #include "MuonReadoutGeometry/MuonChannelDesign.h"
#include "MuonReadoutGeometry/MuonPadDesign.h" #include "MuonReadoutGeometry/MuonPadDesign.h"
#include "MuonIdHelpers/sTgcIdHelper.h" #include "MuonIdHelpers/sTgcIdHelper.h"
class BLinePar; class BLinePar;
...@@ -23,7 +17,6 @@ namespace Trk{ ...@@ -23,7 +17,6 @@ namespace Trk{
class PlaneSurface; class PlaneSurface;
} }
namespace MuonGM { namespace MuonGM {
/** /**
An sTgcReadoutElement corresponds to a single STGC module; therefore An sTgcReadoutElement corresponds to a single STGC module; therefore
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment