1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
#ifndef DataFormats_BTauReco_IsolatedTauTagInfo_h
#define DataFormats_BTauReco_IsolatedTauTagInfo_h
//
// \class IsolatedTauTagInfo
// \short Extended object for the Tau Isolation algorithm.
// contains the result and the methods used in the ConeIsolation Algorithm, to create the
// object to be made persistent on RECO
//
// \author: Simone Gennai, based on ORCA class by S. Gennai and F. Moortgat
//
#include "DataFormats/BTauReco/interface/RefMacros.h"
#include "DataFormats/Math/interface/Vector3D.h"
#include "DataFormats/BTauReco/interface/JTATagInfo.h"
#include "DataFormats/JetReco/interface/JetTracksAssociation.h"
namespace reco {
class IsolatedTauTagInfo : public JTATagInfo {
public:
//default constructor
IsolatedTauTagInfo(void)
: JTATagInfo(),
selectedTracks_()
{}
IsolatedTauTagInfo(const TrackRefVector& tracks, const JetTracksAssociationRef& jtaRef)
: JTATagInfo(jtaRef), selectedTracks_(tracks) {}
//destructor
~IsolatedTauTagInfo() override {}
//get the tracks from the jetTag
const TrackRefVector allTracks() const { return tracks(); }
//get the selected tracks used to computed the isolation
const TrackRefVector selectedTracks() const { return selectedTracks_; }
IsolatedTauTagInfo* clone() const override { return new IsolatedTauTagInfo(*this); }
// default discriminator: returns the value of the discriminator of the jet tag, i.e. the one computed with the parameters taken from the cfg file
float discriminator() const { return m_discriminator; }
//set discriminator value
void setDiscriminator(double discriminator) { m_discriminator = discriminator; }
// methods to be used to recomputed the isolation with a new set of parameters
float discriminator(
float m_cone, float sig_cone, float iso_con, float pt_min_lt, float pt_min_tk, int nTracksIsoRing = 0) const;
float discriminator(const math::XYZVector& myVector,
float m_cone,
float sig_cone,
float iso_con,
float pt_min_lt,
float pt_min_tk,
int nTracksIsoRing) const;
// Used in case the PV is not considered
float discriminator(float m_cone,
float sig_cone,
float iso_con,
float pt_min_lt,
float pt_min_tk,
int nTracksIsoRing,
float dz_lt) const;
float discriminator(const math::XYZVector& myVector,
float m_cone,
float sig_cone,
float iso_con,
float pt_min_lt,
float pt_min_tk,
int nTracksIsoRing,
float dz_lt) const;
// return all tracks in a cone of size "size" around a direction "direction"
const TrackRefVector tracksInCone(const math::XYZVector& myVector, const float size, const float pt_min) const;
const TrackRefVector tracksInCone(const math::XYZVector& myVector,
const float size,
const float pt_min,
const float z_pv,
const float dz_lt) const;
// return the leading track in a given cone around the jet axis or a given direction
void setLeadingTrack(const TrackRef);
const TrackRef leadingSignalTrack() const;
const TrackRef leadingSignalTrack(const float rm_cone, const float pt_min) const;
const TrackRef leadingSignalTrack(const math::XYZVector& myVector, const float rm_cone, const float pt_min) const;
private:
double m_discriminator;
TrackRefVector selectedTracks_;
TrackRef leadTrack_;
};
DECLARE_EDM_REFS(IsolatedTauTagInfo)
} // namespace reco
#endif // DataFormats_BTauReco_IsolatedTauTagInfo_h
|