BOSS 6.6.4.p03
BESIII Offline Software System
Loading...
Searching...
No Matches
DTagTool.h
Go to the documentation of this file.
1
2#ifndef CLASS_DTAGTOOL_H
3#define CLASS_DTAGTOOL_H
4
5#include "GaudiKernel/ObjectVector.h"
6#include "GaudiKernel/AlgFactory.h"
7#include "GaudiKernel/Algorithm.h"
8#include "GaudiKernel/NTuple.h"
9#include "GaudiKernel/IDataProviderSvc.h"
10
11#include "CLHEP/Vector/LorentzVector.h"
16
18
19
20#include <iostream>
21
22using namespace std;
23
24
25
27
28 public:
29
30 DTagTool ();
31
32 ~DTagTool ();
33
34 //DTag operations
35 bool isDTagListEmpty() { return m_isdtaglistempty; }
36 void setPID(bool pid) {m_pid = pid;}
37
38
39
40 EvtRecDTagCol::iterator modes_begin(){ return m_iterbegin;}
41 EvtRecDTagCol::iterator modes_end(){ return m_iterend;}
42 EvtRecPi0Col::iterator pi0_begin(){ return m_pi0iterbegin;}
43 EvtRecVeeVertexCol::iterator ks_begin(){ return m_ksiterbegin;}
44
45
46 vector<int> D0modes() { return m_d0modes;}
47 vector<int> Dpmodes() { return m_dpmodes;}
48 vector<int> Dsmodes() { return m_dsmodes;}
49
50 vector<int> mode(EvtRecDTag::DecayMode decaymode);
51 vector<int> mode(int decaymode);
52
53
54 bool findSTag(EvtRecDTag::DecayMode mode, int tagcharm);
56 bool findDTag(EvtRecDTag::DecayMode mode1, EvtRecDTag::DecayMode mode2,string smass="mbc");
57 bool findDTag(EvtRecDTag::DecayMode mode1, int tagcharm1,EvtRecDTag::DecayMode mode2, int tagcharm2,string smass="mbc" );
59 bool findADTag(EvtRecDTag::DecayMode mode1, int tagcharm1,EvtRecDTag::DecayMode mode2, int tagcharm2 );
60
61 bool findSTag(int mode, int tagcharm);
62 bool findSTag(int mode);
63 bool findDTag(int mode1, int mode2, string smass="mbc");
64 bool findDTag(int mode1, int tagcharm1,int mode2, int tagcharm2,string smass="mbc" );
65 bool findADTag(int mode1, int mode2);
66 bool findADTag(int mode1, int tagcharm1,int mode2, int tagcharm2);
67
68
69
70 EvtRecDTagCol::iterator stag(){ return m_iterstag;}
71 EvtRecDTagCol::iterator dtag1(){ return m_iterdtag1;}
72 EvtRecDTagCol::iterator dtag2(){ return m_iterdtag2;}
73 vector<EvtRecDTagCol::iterator> vdtag1(){ return m_viterdtag1;}
74 vector<EvtRecDTagCol::iterator> vdtag2(){ return m_viterdtag2;}
75
76
77 void operator<< ( EvtRecDTagCol::iterator iter);
78
79
80 //other utilities
81 HepLorentzVector pi0p4(EvtRecPi0Col::iterator pi0Itr, bool isconstrain=true);
82 vector<int> pi0Id(EvtRecDTagCol::iterator iter, int numpi0=1);
83 vector<int> ksId(EvtRecDTagCol::iterator iter, int numks=1);
84 HepLorentzVector p4shower(RecEmcShower* shower);
85 HepLorentzVector p4(RecMdcKalTrack* mdcKalTrack, int pid);
86 bool isPion( EvtRecTrack* trk);
87 bool isKaon( EvtRecTrack* trk);
88 bool isElectron( EvtRecTrack* trk);
89 bool isMuon( EvtRecTrack* trk);
90 bool isGoodTrack( EvtRecTrack* trk);
91 bool isGoodShower( EvtRecTrack* trk);
94 int numofShowerAboveThreshold(int threshold);
95 bool shareTracks(EvtRecDTagCol::iterator iter1, EvtRecDTagCol::iterator iter2);
96
97
98 void clear();
99 void name(){ cout<<" I am the dtag tool"<<endl;}
100
101 protected:
102
103 IDataProviderSvc* eventSvc();
104
105
106 private:
107
108 bool m_isdtaglistempty;
109
110 IDataProviderSvc* m_evtSvc;
111 ISimplePIDSvc* m_simplePIDSvc;
112
113
114
115 EvtRecDTagCol::iterator m_iterbegin;
116 EvtRecDTagCol::iterator m_iterend;
117 EvtRecPi0Col::iterator m_pi0iterbegin;
118 EvtRecPi0Col::iterator m_pi0iterend;
119 EvtRecVeeVertexCol::iterator m_ksiterbegin;
120 EvtRecVeeVertexCol::iterator m_ksiterend;
121
122
123 bool m_pid;
124
125 EvtRecDTagCol::iterator m_iterstag;
126 EvtRecDTagCol::iterator m_iterdtag1;
127 EvtRecDTagCol::iterator m_iterdtag2;
128 vector<EvtRecDTagCol::iterator> m_viterdtag1;
129 vector<EvtRecDTagCol::iterator> m_viterdtag2;
130
131
132 vector<int> m_d0modes;
133 vector<int> m_dpmodes;
134 vector<int> m_dsmodes;
135
136 EvtRecTrackIterator m_chargebegin;
137 EvtRecTrackIterator m_chargeend;
138 EvtRecTrackIterator m_showerbegin;
139 EvtRecTrackIterator m_showerend;
140
141
142};
143
144typedef EvtRecDTagCol::iterator DTagToolIterator;
145typedef EvtRecPi0Col::iterator pi0Iterator;
146typedef EvtRecVeeVertexCol::iterator ksIterator;
147
148
149
150#endif
EvtRecVeeVertexCol::iterator ksIterator
Definition: DTagTool.h:146
EvtRecPi0Col::iterator pi0Iterator
Definition: DTagTool.h:145
EvtRecDTagCol::iterator DTagToolIterator
Definition: DTagTool.h:144
EvtRecTrackCol::iterator EvtRecTrackIterator
Definition: EvtRecTrack.h:111
EvtStreamInputIterator< typename Generator::result_type > iter(Generator gen, int N=0)
vector< int > pi0Id(EvtRecDTagCol::iterator iter, int numpi0=1)
Definition: DTagTool.cxx:714
bool isGoodTrack(EvtRecTrack *trk)
Definition: DTagTool.cxx:974
void name()
Definition: DTagTool.h:99
bool isPion(EvtRecTrack *trk)
Definition: DTagTool.cxx:876
EvtRecDTagCol::iterator modes_begin()
Definition: DTagTool.h:40
EvtRecDTagCol::iterator modes_end()
Definition: DTagTool.h:41
vector< int > Dpmodes()
Definition: DTagTool.h:47
void clear()
Definition: DTagTool.cxx:118
bool isElectron(EvtRecTrack *trk)
Definition: DTagTool.cxx:906
bool isKaon(EvtRecTrack *trk)
Definition: DTagTool.cxx:891
EvtRecDTagCol::iterator dtag2()
Definition: DTagTool.h:72
vector< int > D0modes()
Definition: DTagTool.h:46
bool findDTag(EvtRecDTag::DecayMode mode1, EvtRecDTag::DecayMode mode2, string smass="mbc")
Definition: DTagTool.cxx:265
bool shareTracks(EvtRecDTagCol::iterator iter1, EvtRecDTagCol::iterator iter2)
Definition: DTagTool.cxx:1071
vector< int > mode(EvtRecDTag::DecayMode decaymode)
Definition: DTagTool.cxx:135
bool findSTag(EvtRecDTag::DecayMode mode, int tagcharm)
Definition: DTagTool.cxx:181
EvtRecPi0Col::iterator pi0_begin()
Definition: DTagTool.h:42
HepLorentzVector pi0p4(EvtRecPi0Col::iterator pi0Itr, bool isconstrain=true)
Definition: DTagTool.cxx:690
bool isDTagListEmpty()
Definition: DTagTool.h:35
vector< int > ksId(EvtRecDTagCol::iterator iter, int numks=1)
Definition: DTagTool.cxx:763
void operator<<(EvtRecDTagCol::iterator iter)
Definition: DTagTool.cxx:672
int numofShowerAboveThreshold()
IDataProviderSvc * eventSvc()
Definition: DTagTool.cxx:1097
vector< int > Dsmodes()
Definition: DTagTool.h:48
bool isGoodShower(EvtRecTrack *trk)
Definition: DTagTool.cxx:1010
HepLorentzVector p4(RecMdcKalTrack *mdcKalTrack, int pid)
Definition: DTagTool.cxx:822
void setPID(bool pid)
Definition: DTagTool.h:36
bool cosmicandleptonVeto()
Definition: DTagTool.cxx:1024
bool isMuon(EvtRecTrack *trk)
Definition: DTagTool.cxx:940
vector< EvtRecDTagCol::iterator > vdtag1()
Definition: DTagTool.h:73
EvtRecDTagCol::iterator stag()
Definition: DTagTool.h:70
int numofShowerAboveThreshold(int threshold)
EvtRecVeeVertexCol::iterator ks_begin()
Definition: DTagTool.h:43
HepLorentzVector p4shower(RecEmcShower *shower)
Definition: DTagTool.cxx:813
bool findADTag(EvtRecDTag::DecayMode mode1, EvtRecDTag::DecayMode mode2)
Definition: DTagTool.cxx:279
EvtRecDTagCol::iterator dtag1()
Definition: DTagTool.h:71
vector< EvtRecDTagCol::iterator > vdtag2()
Definition: DTagTool.h:74
DTagTool()
Definition: DTagTool.cxx:32