ATLAS Offline Software
InDetTrtDriftCircleCutTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 
9 {
10  // Read key
12 
13  return StatusCode::SUCCESS;
14 }
15 
16 InDet::InDetTrtDriftCircleCutTool::InDetTrtDriftCircleCutTool(const std::string& t, const std::string& n, const IInterface* p)
17  :AthAlgTool(t,n,p),
18  m_minOffset(0),
19  m_param(false),
20  m_useTRT(true)
21 {
22  declareInterface<ITrtDriftCircleCutTool>(this);
23  declareProperty("MinOffsetDCs", m_minOffset );
24  declareProperty("UseNewParameterization", m_param );
25  declareProperty("UseActiveFractionSvc", m_useTRT );
26 }
27 
29 = default;
30 
32  if(!m_param){
33  const double TrtEtaBin[6] = {0., 0.65, 0.85, 1.25, 1.80, 2.10};
34  const double TrtA [5] = { 29., 31., 20., 36., 34. };
35  const double TrtB [5] = { 2./0.65, -11./0.20, 16./0.40, -2./0.55, -24./0.3};
36 
37  double eta= fabs(trkp->momentum().eta());
38 
39  for(int i=0; i!=5; ++i) {
40  if(eta <= TrtEtaBin[i+1]) {
41  return int(TrtA[i]+TrtB[i]*(eta-TrtEtaBin[i])-m_minOffset);
42  }
43  }
44  return int(m_minOffset);
45  } else {
46  const double TrtEtaBin[7] = {0., 0.1, 0.6255, 1.07, 1.304, 1.752, 2.0 };
47  const double TrtA [6] = { 33.28, 30.40, 182.38, -226.18, -351.56, -250.2 };
48  const double TrtB [6] = { -79.4, 18.79, -371.9, 495.12, 777.5, 377.9 };
49  const double TrtC [6] = { 589.7, -42.73, 213.3, -314.96 , -512.3, -128.7 };
50  const double TrtD [6] = { 0., 32.53, 0. , 69.42 , 111.0, 3.4 };
51  const double TrtO [6] = { 9., 11., 10., 7., 9., 12. };
52 
53  double eta = fabs(trkp->momentum().eta());
54 
56  const TRTCond::ActiveFraction* actF{*strawReadHandle};
57 
58  for(int i=0; i!=6; ++i) {
59  if(eta <= TrtEtaBin[i+1]) {
60  double diff = eta;
61  double nDiffTRT = TrtA[i]+TrtB[i]*diff+TrtC[i]*diff*diff+TrtD[i]*diff*diff*diff-TrtO[i];
62  double activeF = 1.;
63  float phi = trkp->momentum().phi();
64  float eta = trkp->momentum().eta();
65  if(m_useTRT) activeF = actF->getActiveFraction(eta,phi);
66  nDiffTRT = nDiffTRT*activeF;
67  if (nDiffTRT>=1) return int(nDiffTRT);
68  else return int(m_minOffset);
69  }
70  }
71  return int(m_minOffset);
72  }
73 }
InDet::InDetTrtDriftCircleCutTool::minNumberDCs
virtual int minNumberDCs(const Trk::TrackParameters *) const override
Minimum number of drift circles using the track scoring tool.
Definition: InDetTrtDriftCircleCutTool.cxx:31
InDet::InDetTrtDriftCircleCutTool::~InDetTrtDriftCircleCutTool
virtual ~InDetTrtDriftCircleCutTool()
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
mc.diff
diff
Definition: mc.SFGenPy8_MuMu_DD.py:14
InDet::InDetTrtDriftCircleCutTool::initialize
virtual StatusCode initialize() override
Definition: InDetTrtDriftCircleCutTool.cxx:8
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ReadCondHandle.h
InDet::InDetTrtDriftCircleCutTool::m_minOffset
int m_minOffset
Properties for track selection:all cuts are ANDed.
Definition: InDetTrtDriftCircleCutTool.h:42
lumiFormat.i
int i
Definition: lumiFormat.py:92
InDet::InDetTrtDriftCircleCutTool::InDetTrtDriftCircleCutTool
InDetTrtDriftCircleCutTool(const std::string &t, const std::string &n, const IInterface *p)
Definition: InDetTrtDriftCircleCutTool.cxx:16
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
InDet::InDetTrtDriftCircleCutTool::m_useTRT
bool m_useTRT
Use the TRT active fraction services to correct for dead straws.
Definition: InDetTrtDriftCircleCutTool.h:44
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Trk::ParametersBase
Definition: ParametersBase.h:55
InDetTrtDriftCircleCutTool.h
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
InDet::InDetTrtDriftCircleCutTool::m_param
bool m_param
Use the new or the old parameterization.
Definition: InDetTrtDriftCircleCutTool.h:43
InDet::InDetTrtDriftCircleCutTool::m_strawReadKey
SG::ReadCondHandleKey< TRTCond::ActiveFraction > m_strawReadKey
Definition: InDetTrtDriftCircleCutTool.h:40
AthAlgTool
Definition: AthAlgTool.h:26
TRTCond::ActiveFraction
Definition: ActiveFraction.h:15