ATLAS Offline Software
Loading...
Searching...
No Matches
InDetTrtDriftCircleCutTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
7
9{
10 // Read key
11 ATH_CHECK( m_strawReadKey.initialize() );
12
13 return StatusCode::SUCCESS;
14}
15
16InDet::InDetTrtDriftCircleCutTool::InDetTrtDriftCircleCutTool(const std::string& t, const std::string& n, const IInterface* p)
17 :AthAlgTool(t,n,p)
18{
19 declareInterface<ITrtDriftCircleCutTool>(this);
20}
21
23= default;
24
26 if(!m_param){
27 const double TrtEtaBin[6] = {0., 0.65, 0.85, 1.25, 1.80, 2.10};
28 const double TrtA [5] = { 29., 31., 20., 36., 34. };
29 const double TrtB [5] = { 2./0.65, -11./0.20, 16./0.40, -2./0.55, -24./0.3};
30
31 double eta= fabs(trkp->momentum().eta());
32
33 for(int i=0; i!=5; ++i) {
34 if(eta <= TrtEtaBin[i+1]) {
35 return int(TrtA[i]+TrtB[i]*(eta-TrtEtaBin[i])-m_minOffset);
36 }
37 }
38 return int(m_minOffset);
39 } else {
40 const double TrtEtaBin[7] = {0., 0.1, 0.6255, 1.07, 1.304, 1.752, 2.0 };
41 const double TrtA [6] = { 33.28, 30.40, 182.38, -226.18, -351.56, -250.2 };
42 const double TrtB [6] = { -79.4, 18.79, -371.9, 495.12, 777.5, 377.9 };
43 const double TrtC [6] = { 589.7, -42.73, 213.3, -314.96 , -512.3, -128.7 };
44 const double TrtD [6] = { 0., 32.53, 0. , 69.42 , 111.0, 3.4 };
45 const double TrtO [6] = { 9., 11., 10., 7., 9., 12. };
46
47 double eta = fabs(trkp->momentum().eta());
48
50 const TRTCond::ActiveFraction* actF{*strawReadHandle};
51
52 for(int i=0; i!=6; ++i) {
53 if(eta <= TrtEtaBin[i+1]) {
54 double diff = eta;
55 double nDiffTRT = TrtA[i]+TrtB[i]*diff+TrtC[i]*diff*diff+TrtD[i]*diff*diff*diff-TrtO[i];
56 double activeF = 1.;
57 float phi = trkp->momentum().phi();
58 float eta = trkp->momentum().eta();
59 if(m_useTRT) activeF = actF->getActiveFraction(eta,phi);
60 nDiffTRT = nDiffTRT*activeF;
61 if (nDiffTRT>=1) return int(nDiffTRT);
62 else return int(m_minOffset);
63 }
64 }
65 return int(m_minOffset);
66 }
67}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
void diff(const Jet &rJet1, const Jet &rJet2, std::map< std::string, double > varDiff)
Difference between jets - Non-Class function required by trigger.
Definition Jet.cxx:631
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
IntegerProperty m_minOffset
Properties for track selection:all cuts are ANDed.
virtual int minNumberDCs(const Trk::TrackParameters *) const override
Minimum number of drift circles using the track scoring tool.
InDetTrtDriftCircleCutTool(const std::string &t, const std::string &n, const IInterface *p)
SG::ReadCondHandleKey< TRTCond::ActiveFraction > m_strawReadKey
float getActiveFraction(float eta, float phi) const
const Amg::Vector3D & momentum() const
Access method for the momentum.
ParametersBase< TrackParametersDim, Charged > TrackParameters