ATLAS Offline Software
NewVrtSecInclusive.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
2 # Author: Vadim Kostyukhin vadim.kostyukhin@cern.ch
3 
4 from AthenaCommon.Logging import logging
5 from NewVrtSecInclusiveTool.NewVrtSecInclusiveToolConf import Rec__NewVrtSecInclusiveTool
6 from NewVrtSecInclusiveTool.NewVrtSecInclusiveToolConf import Rec__NewVrtSecInclusiveAlg
7 
8 # define the class
9 # Search for low-pt (soft) B-hadron vertices.
10 #------------------------------------
11 class SoftBFinderTool( Rec__NewVrtSecInclusiveTool ):
12 
13  def __init__(self, name = 'SoftBFinderTool' ):
14 
15  from AthenaCommon.AppMgr import ToolSvc
16  mlog = logging.getLogger( 'SoftBFinderTool::__init__ ' )
17  mlog.info("entering")
18  #----------------------
19  # VKalVrt vertex fitter
20  #
21  from TrkVKalVrtFitter.TrkVKalVrtFitterConf import Trk__TrkVKalVrtFitter
22  SVertexFitterTool = Trk__TrkVKalVrtFitter(name="SoftBVertexFitterTool",
23  Extrapolator="Trk::Extrapolator/AtlasExtrapolator")
24  ToolSvc += SVertexFitterTool
25  #----------------------
26  # Soft B-hadron vertex finder itself
27  #
28  Rec__NewVrtSecInclusiveTool.__init__( self, name = name,
29  VertexFitterTool = SVertexFitterTool,
30  CutPt = 500,
31  CutBLayHits = 1,
32  CutPixelHits = 3,
33  CutSiHits = 8,
34  CutTRTHits = 10,
35  useVertexCleaning = True,
36  MultiWithOneTrkVrt = True,
37  removeTrkMatSignif = -1., # No additional material rejection
38  AntiPileupSigRCut = 2.0,
39  TrkSigCut = 2.0,
40  SelVrtSigCut = 3.0,
41  v2tIniBDTCut =-0.7,
42  v2tFinBDTCut = 0.0,
43  cosSVPVCut = 0.4,
44  FastZSVCut = 5.,
45  VertexMergeCut = 4., # 3D vertex-vertex dist significance to try merging
46  MaxSVRadiusCut = 50 # Inside Pixel BL volume
47  )
48  mlog = logging.getLogger( 'SoftBFinderTool::__configured__ ' )
49 
50 
53 class InclusiveBFinderTool( Rec__NewVrtSecInclusiveTool ):
54 
55  def __init__(self, name = 'InclusiveBFinderTool' ):
56 
57  from AthenaCommon.AppMgr import ToolSvc
58  mlog = logging.getLogger( 'InclusiveBFinderTool::__init__ ' )
59  mlog.info("entering")
60  #----------------------
61  # VKalVrt vertex fitter
62  #
63  from TrkVKalVrtFitter.TrkVKalVrtFitterConf import Trk__TrkVKalVrtFitter
64  SVertexFitterTool = Trk__TrkVKalVrtFitter(name="InclsusiveBVertexFitterTool",
65  Extrapolator="Trk::Extrapolator/AtlasExtrapolator")
66  ToolSvc += SVertexFitterTool
67  #----------------------
68  # Soft B-hadron vertex finder itself
69  #
70  Rec__NewVrtSecInclusiveTool.__init__( self, name = name,
71  VertexFitterTool = SVertexFitterTool,
72  CutPt = 500,
73  CutBLayHits = 0,
74  CutPixelHits = 2,
75  CutSiHits = 8,
76  CutTRTHits = 10,
77  useVertexCleaning = True,
78  MultiWithOneTrkVrt = True,
79  removeTrkMatSignif = -1., # No additional material rejection
80  AntiPileupSigRCut = 2.0,
81  TrkSigCut = 2.0,
82  SelVrtSigCut = 3.0,
83  v2tIniBDTCut =-0.7,
84  v2tFinBDTCut =-0.2,
85  cosSVPVCut = 0.5,
86  FastZSVCut = 8.,
87  VertexMergeCut = 4., # 3D vertex-vertex dist significance to try merging
88  MaxSVRadiusCut = 140 # Inside Pixel volume
89  )
90 
92 class HighPtBFinderTool( Rec__NewVrtSecInclusiveTool ):
93 
94  def __init__(self, name = 'HighPtBFinderTool' ):
95 
96  from AthenaCommon.AppMgr import ToolSvc
97  mlog = logging.getLogger( 'HighPtBFinderTool::__init__ ' )
98  mlog.info("entering")
99  #----------------------
100  # VKalVrt vertex fitter
101  #
102  from TrkVKalVrtFitter.TrkVKalVrtFitterConf import Trk__TrkVKalVrtFitter
103  SVertexFitterTool = Trk__TrkVKalVrtFitter(name="HighPtBVertexFitterTool",
104  Extrapolator="Trk::Extrapolator/AtlasExtrapolator")
105  ToolSvc += SVertexFitterTool
106  #----------------------
107  # Soft B-hadron vertex finder itself
108  #
109  Rec__NewVrtSecInclusiveTool.__init__( self, name = name,
110  VertexFitterTool = SVertexFitterTool,
111  CutPt = 1000,
112  CutBLayHits = 0,
113  CutPixelHits = 2,
114  CutSiHits = 8,
115  useVertexCleaning = True,
116  MultiWithOneTrkVrt = True,
117  removeTrkMatSignif = -1., # No additional material rejection
118  AntiPileupSigRCut = 2.0,
119  TrkSigCut = 2.0,
120  SelVrtSigCut = 3.0,
121  v2tIniBDTCut =-0.6,
122  v2tFinBDTCut = 0.2
123  )
124 
127 class MaterialSVFinderTool( Rec__NewVrtSecInclusiveTool ):
128 
129  def __init__(self, name = 'MaterialSVFinderTool' ):
130 
131  from AthenaCommon.AppMgr import ToolSvc
132  mlog = logging.getLogger( 'MaterialSVFinderTool::__init__ ' )
133  mlog.info("entering")
134  #----------------------
135  # VKalVrt vertex fitter
136  #
137  from TrkVKalVrtFitter.TrkVKalVrtFitterConf import Trk__TrkVKalVrtFitter
138  SVertexFitterTool = Trk__TrkVKalVrtFitter(name="MaterialSVVertexFitterTool",
139  Extrapolator="Trk::Extrapolator/AtlasExtrapolator")
140  ToolSvc += SVertexFitterTool
141  #----------------------
142  # Soft B-hadron vertex finder itself
143  #
144  Rec__NewVrtSecInclusiveTool.__init__( self, name = name,
145  VertexFitterTool = SVertexFitterTool,
146  CutBLayHits = 0,
147  CutPixelHits = 1,
148  CutSiHits = 8,
149  CutTRTHits = 10,
150  useVertexCleaning = False,
151  MultiWithOneTrkVrt = False,
152  removeTrkMatSignif = -1., # No additional material rejection
153  AntiPileupSigRCut = 5.0,
154  cosSVPVCut = 0.,
155  TrkSigCut = 5.0, # Minimal track 3D impact significance
156  SelVrtSigCut = 10.0,
157  v2tIniBDTCut =-1.01, #Effectively remove MVA selection
158  v2tFinBDTCut =-1.01, #Effectively remove MVA selection
159  VrtMassLimit = 8000.,
160  Vrt2TrMassLimit = 8000.,
161  CutPt = 500.
162  )
163 
166 class DVFinderTool( Rec__NewVrtSecInclusiveTool ):
167 
168  def __init__(self, name = 'DVFinderTool' ):
169 
170  from AthenaCommon.AppMgr import ToolSvc
171  mlog = logging.getLogger( 'DVFinderTool::__init__ ' )
172  mlog.info("entering")
173  #----------------------
174  # VKalVrt vertex fitter
175  #
176  from TrkVKalVrtFitter.TrkVKalVrtFitterConf import Trk__TrkVKalVrtFitter
177  DVertexFitterTool = Trk__TrkVKalVrtFitter(name="DVertexFitterTool",
178  Extrapolator="Trk::Extrapolator/AtlasExtrapolator")
179  ToolSvc += DVertexFitterTool
180  #----------------------
181  # Soft B-hadron vertex finder itself
182  #
183  Rec__NewVrtSecInclusiveTool.__init__( self, name = name,
184  VertexFitterTool = DVertexFitterTool,
185  CutPt = 1000.,
186  CutBLayHits = 0,
187  CutPixelHits = 0,
188  CutSiHits = 7,
189  CutTRTHits = 15,
190  CutD0Max = 1000., # Maximal track impact parameter
191  CutD0Min = 0., # Minimal track impact parameter
192  AntiPileupSigRCut = 6.0, # Remove tracks aroung beamline
193  TrkSigCut = 10.0, # Minimal track 3D impact significance
194  VrtMassLimit = 1000000.,
195  Vrt2TrMassLimit = 1000000.,
196  useVertexCleaning = False,
197  MultiWithOneTrkVrt = False,
198  removeTrkMatSignif = -1., # No explicit material interation rejection
199  SelVrtSigCut = 8.0,
200  v2tIniBDTCut =-1.1, # Disable b-hadron trained BDT here
201  v2tFinBDTCut =-1.1, # Disable b-hadron trained BDT here
202  cosSVPVCut = 0.0,
203  CutZVrt = 100.,
204  VertexMergeCut = 10., # 3D vertex-vertex dist significance to try merging
205  FastZSVCut = 30., # Pre-selection track-track distance cut
206  MaxSVRadiusCut = 350.
207  )
208 
209 
214 class V2TCalibrationTool( Rec__NewVrtSecInclusiveTool ):
215 
216  def __init__(self, name = 'V2TCalibrationTool' ):
217 
218  from AthenaCommon.AppMgr import ToolSvc
219  mlog = logging.getLogger( 'DVFinderTool::__init__ ' )
220  mlog.info("entering")
221  #----------------------
222  # VKalVrt vertex fitter
223  #
224  from TrkVKalVrtFitter.TrkVKalVrtFitterConf import Trk__TrkVKalVrtFitter
225  SVertexFitterTool = Trk__TrkVKalVrtFitter(name="SVertexFitterTool",
226  Extrapolator="Trk::Extrapolator/AtlasExtrapolator")
227  ToolSvc += SVertexFitterTool
228  #----------------------
229  # Soft B-hadron vertex finder itself
230  #
231  Rec__NewVrtSecInclusiveTool.__init__( self, name = name,
232  VertexFitterTool = SVertexFitterTool,
233  FillHist =True,
234  CutPt = 400., # Lowest track Pt
235  CutBLayHits = 0,
236  CutPixelHits = 1, # Only vertices inside Pixel are considered
237  CutSiHits = 8,
238  CutTRTHits = 15,
239  VrtMassLimit = 5500.,
240  Vrt2TrMassLimit = 4000.,
241  useVertexCleaning = False,
242  MultiWithOneTrkVrt = False,
243  removeTrkMatSignif = -1., # No explicit material interation rejection
244  AntiPileupSigRCut = 2.0,
245  TrkSigCut = 2.0, # Minimal track 3D impact significance
246  v2tIniBDTCut =-1.1, # Disable BDT usage
247  v2tFinBDTCut =-1.1, # Disable BDT usage
248  cosSVPVCut = 0.0, # Maximal angle between SV-PV and SV momentum
249  CutD0Max = 300., # Maximal track impact parameter
250  CutD0Min = 0., # Minimal track impact parameter
251  CutZVrt = 100.,
252  FastZSVCut = 15., # Pre-selection track-track distance cut
253  MaxSVRadiusCut = 140.
254  )
255 
256 
258 class AllBVertexFinderAlg( Rec__NewVrtSecInclusiveAlg ):
259 
260  def __init__(self, name = 'AllBVertexFinderAlg' ):
261 
262  from AthenaCommon.AppMgr import ToolSvc
263  mlog = logging.getLogger( 'AllBVertexFinderAlg::__init__ ' )
264  mlog.info("entering")
265 
266  BFinderTool = InclusiveBFinderTool()
267  ToolSvc += BFinderTool
268  #----------------------
269  # All B-hadron vertex finder itself
270  #
271  Rec__NewVrtSecInclusiveAlg.__init__( self, name = name,
272  BVertexTool = BFinderTool
273  )
NewVrtSecInclusive.AllBVertexFinderAlg.__init__
def __init__(self, name='AllBVertexFinderAlg')
Definition: NewVrtSecInclusive.py:260
NewVrtSecInclusive.HighPtBFinderTool.__init__
def __init__(self, name='HighPtBFinderTool')
Definition: NewVrtSecInclusive.py:94
NewVrtSecInclusive.InclusiveBFinderTool
Definition: NewVrtSecInclusive.py:53
NewVrtSecInclusive.AllBVertexFinderAlg
Definition: NewVrtSecInclusive.py:258
NewVrtSecInclusive.HighPtBFinderTool
Definition: NewVrtSecInclusive.py:92
NewVrtSecInclusive.InclusiveBFinderTool.__init__
def __init__(self, name='InclusiveBFinderTool')
Definition: NewVrtSecInclusive.py:55
NewVrtSecInclusive.MaterialSVFinderTool.__init__
def __init__(self, name='MaterialSVFinderTool')
Definition: NewVrtSecInclusive.py:129
NewVrtSecInclusive.SoftBFinderTool
Definition: NewVrtSecInclusive.py:11
NewVrtSecInclusive.MaterialSVFinderTool
Definition: NewVrtSecInclusive.py:127
NewVrtSecInclusive.DVFinderTool
Definition: NewVrtSecInclusive.py:166
NewVrtSecInclusive.V2TCalibrationTool
Definition: NewVrtSecInclusive.py:214
NewVrtSecInclusive.DVFinderTool.__init__
def __init__(self, name='DVFinderTool')
Definition: NewVrtSecInclusive.py:168
NewVrtSecInclusive.V2TCalibrationTool.__init__
def __init__(self, name='V2TCalibrationTool')
Definition: NewVrtSecInclusive.py:216
NewVrtSecInclusive.SoftBFinderTool.__init__
def __init__(self, name='SoftBFinderTool')
Definition: NewVrtSecInclusive.py:13