BOSS 7.0.6
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"
17
19
20
21#include <iostream>
22
23using namespace std;
24
25
26
28
29 public:
30
31 DTagTool ();
32
33 ~DTagTool ();
34
35 //DTag operations
36 bool isDTagListEmpty() { return m_isdtaglistempty; }
37 void setPID(bool pid) {m_pid = pid;}
38
39
40
41 EvtRecDTagCol::iterator modes_begin(){ return m_iterbegin;}
42 EvtRecDTagCol::iterator modes_end(){ return m_iterend;}
43 EvtRecPi0Col::iterator pi0_begin(){ return m_pi0iterbegin;}
44 EvtRecPi0Col::iterator pi0_end(){ return m_pi0iterend;}
45 EvtRecEtaToGGCol::iterator eta_begin(){ return m_etaiterbegin;}
46 EvtRecEtaToGGCol::iterator eta_end(){ return m_etaiterend;}
47 EvtRecVeeVertexCol::iterator ks_begin(){ return m_ksiterbegin;}
48 EvtRecVeeVertexCol::iterator ks_end(){ return m_ksiterend;}
49
50
51 vector<int> D0modes() { return m_d0modes;}
52 vector<int> Dpmodes() { return m_dpmodes;}
53 vector<int> Dsmodes() { return m_dsmodes;}
54
55 vector<int> mode(EvtRecDTag::DecayMode decaymode);
56 vector<int> mode(int decaymode);
57
58
59 bool findSTag(EvtRecDTag::DecayMode mode, int tagcharm);
61 bool findDTag(EvtRecDTag::DecayMode mode1, EvtRecDTag::DecayMode mode2,string smass="mbc");
62 bool findDTag(EvtRecDTag::DecayMode mode1, int tagcharm1,EvtRecDTag::DecayMode mode2, int tagcharm2,string smass="mbc" );
64 bool findADTag(EvtRecDTag::DecayMode mode1, int tagcharm1,EvtRecDTag::DecayMode mode2, int tagcharm2 );
65
66 bool findSTag(int mode, int tagcharm);
67 bool findSTag(int mode);
68 bool findDTag(int mode1, int mode2, string smass="mbc");
69 bool findDTag(int mode1, int tagcharm1,int mode2, int tagcharm2,string smass="mbc" );
70 bool findADTag(int mode1, int mode2);
71 bool findADTag(int mode1, int tagcharm1,int mode2, int tagcharm2);
72
73
74
75 EvtRecDTagCol::iterator stag(){ return m_iterstag;}
76 EvtRecDTagCol::iterator dtag1(){ return m_iterdtag1;}
77 EvtRecDTagCol::iterator dtag2(){ return m_iterdtag2;}
78 vector<EvtRecDTagCol::iterator> vdtag1(){ return m_viterdtag1;}
79 vector<EvtRecDTagCol::iterator> vdtag2(){ return m_viterdtag2;}
80 void setdtagDE(double sigma1,double sigma2){ m_tag1desigma=sigma1;m_tag2desigma=sigma2;}
81 bool compare(EvtRecDTagCol::iterator pair1_iter1,EvtRecDTagCol::iterator pair1_iter2,EvtRecDTagCol::iterator pair2_iter1,EvtRecDTagCol::iterator pair2_iter2, double mD, string smass);
82
83 void operator<< ( EvtRecDTagCol::iterator iter);
84
85
86 //other utilities
87 HepLorentzVector pi0p4(EvtRecPi0Col::iterator pi0Itr, bool isconstrain=true);
88 HepLorentzVector etap4(EvtRecEtaToGGCol::iterator etaItr, bool isconstrain=true);
89 vector<int> pi0Id(EvtRecDTagCol::iterator iter, int numpi0=1);
90 vector<int> etaId(EvtRecDTagCol::iterator iter, int numeta=1);
91 vector<int> ksId(EvtRecDTagCol::iterator iter, int numks=1);
92 HepLorentzVector p4shower(RecEmcShower* shower);
93 HepLorentzVector p4(RecMdcKalTrack* mdcKalTrack, int pid);
94 bool isPion( EvtRecTrack* trk);
95 bool isKaon( EvtRecTrack* trk);
96 bool isElectron( EvtRecTrack* trk);
97 bool isMuon( EvtRecTrack* trk);
98 bool isGoodTrack( EvtRecTrack* trk);
100 bool isGoodShower( EvtRecTrack* trk);
101 bool isGoodShower(EvtRecTrack* trk, double shwDang);
102 bool cosmicandleptonVeto(bool emc=true);
104 int numofShowerAboveThreshold(int threshold);
105 bool shareTracks(EvtRecDTagCol::iterator iter1, EvtRecDTagCol::iterator iter2);
106 double angleShowerwithTrack(EvtRecTrack *shower, EvtRecTrack *track);
107
108 void clear();
109 void name(){ cout<<" I am the dtag tool"<<endl;}
110
111 protected:
112
113 IDataProviderSvc* eventSvc();
114
115
116 private:
117
118 bool m_isdtaglistempty;
119
120 IDataProviderSvc* m_evtSvc;
121 ISimplePIDSvc* m_simplePIDSvc;
122
123
124
125 EvtRecDTagCol::iterator m_iterbegin;
126 EvtRecDTagCol::iterator m_iterend;
127 EvtRecPi0Col::iterator m_pi0iterbegin;
128 EvtRecPi0Col::iterator m_pi0iterend;
129 EvtRecEtaToGGCol::iterator m_etaiterbegin;
130 EvtRecEtaToGGCol::iterator m_etaiterend;
131 EvtRecVeeVertexCol::iterator m_ksiterbegin;
132 EvtRecVeeVertexCol::iterator m_ksiterend;
133
134
135 bool m_pid;
136
137 EvtRecDTagCol::iterator m_iterstag;
138 EvtRecDTagCol::iterator m_iterdtag1;
139 EvtRecDTagCol::iterator m_iterdtag2;
140 vector<EvtRecDTagCol::iterator> m_viterdtag1;
141 vector<EvtRecDTagCol::iterator> m_viterdtag2;
142 double m_tag1desigma;
143 double m_tag2desigma;
144
145 vector<int> m_d0modes;
146 vector<int> m_dpmodes;
147 vector<int> m_dsmodes;
148
149 EvtRecTrackIterator m_chargebegin;
150 EvtRecTrackIterator m_chargeend;
151 EvtRecTrackIterator m_showerbegin;
152 EvtRecTrackIterator m_showerend;
153
154
155};
156
157typedef EvtRecDTagCol::iterator DTagToolIterator;
158typedef EvtRecPi0Col::iterator pi0Iterator;
159typedef EvtRecEtaToGGCol::iterator etaIterator;
160typedef EvtRecVeeVertexCol::iterator ksIterator;
161
162
163
164#endif
EvtRecVeeVertexCol::iterator ksIterator
Definition: DTagTool.h:160
EvtRecEtaToGGCol::iterator etaIterator
Definition: DTagTool.h:159
EvtRecPi0Col::iterator pi0Iterator
Definition: DTagTool.h:158
EvtRecDTagCol::iterator DTagToolIterator
Definition: DTagTool.h:157
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:772
vector< int > etaId(EvtRecDTagCol::iterator iter, int numeta=1)
Definition: DTagTool.cxx:823
bool isGoodTrack(EvtRecTrack *trk)
Definition: DTagTool.cxx:1083
EvtRecPi0Col::iterator pi0_end()
Definition: DTagTool.h:44
void name()
Definition: DTagTool.h:109
bool isPion(EvtRecTrack *trk)
Definition: DTagTool.cxx:985
EvtRecDTagCol::iterator modes_begin()
Definition: DTagTool.h:41
EvtRecDTagCol::iterator modes_end()
Definition: DTagTool.h:42
double angleShowerwithTrack(EvtRecTrack *shower, EvtRecTrack *track)
Definition: DTagTool.cxx:1296
void setdtagDE(double sigma1, double sigma2)
Definition: DTagTool.h:80
vector< int > Dpmodes()
Definition: DTagTool.h:52
void clear()
Definition: DTagTool.cxx:131
bool isElectron(EvtRecTrack *trk)
Definition: DTagTool.cxx:1015
bool isKaon(EvtRecTrack *trk)
Definition: DTagTool.cxx:1000
EvtRecDTagCol::iterator dtag2()
Definition: DTagTool.h:77
vector< int > D0modes()
Definition: DTagTool.h:51
bool findDTag(EvtRecDTag::DecayMode mode1, EvtRecDTag::DecayMode mode2, string smass="mbc")
Definition: DTagTool.cxx:301
bool shareTracks(EvtRecDTagCol::iterator iter1, EvtRecDTagCol::iterator iter2)
Definition: DTagTool.cxx:1315
vector< int > mode(EvtRecDTag::DecayMode decaymode)
Definition: DTagTool.cxx:171
bool findSTag(EvtRecDTag::DecayMode mode, int tagcharm)
Definition: DTagTool.cxx:217
EvtRecPi0Col::iterator pi0_begin()
Definition: DTagTool.h:43
bool isGoodTrack_loose(EvtRecTrack *trk)
Definition: DTagTool.cxx:1119
HepLorentzVector pi0p4(EvtRecPi0Col::iterator pi0Itr, bool isconstrain=true)
Definition: DTagTool.cxx:726
bool compare(EvtRecDTagCol::iterator pair1_iter1, EvtRecDTagCol::iterator pair1_iter2, EvtRecDTagCol::iterator pair2_iter1, EvtRecDTagCol::iterator pair2_iter2, double mD, string smass)
Definition: DTagTool.cxx:147
EvtRecEtaToGGCol::iterator eta_begin()
Definition: DTagTool.h:45
EvtRecVeeVertexCol::iterator ks_end()
Definition: DTagTool.h:48
bool isDTagListEmpty()
Definition: DTagTool.h:36
vector< int > ksId(EvtRecDTagCol::iterator iter, int numks=1)
Definition: DTagTool.cxx:872
void operator<<(EvtRecDTagCol::iterator iter)
Definition: DTagTool.cxx:708
int numofShowerAboveThreshold()
IDataProviderSvc * eventSvc()
Definition: DTagTool.cxx:1341
vector< int > Dsmodes()
Definition: DTagTool.h:53
bool isGoodShower(EvtRecTrack *trk)
Definition: DTagTool.cxx:1157
HepLorentzVector p4(RecMdcKalTrack *mdcKalTrack, int pid)
Definition: DTagTool.cxx:931
void setPID(bool pid)
Definition: DTagTool.h:37
bool isMuon(EvtRecTrack *trk)
Definition: DTagTool.cxx:1049
vector< EvtRecDTagCol::iterator > vdtag1()
Definition: DTagTool.h:78
EvtRecDTagCol::iterator stag()
Definition: DTagTool.h:75
int numofShowerAboveThreshold(int threshold)
EvtRecVeeVertexCol::iterator ks_begin()
Definition: DTagTool.h:47
HepLorentzVector p4shower(RecEmcShower *shower)
Definition: DTagTool.cxx:922
HepLorentzVector etap4(EvtRecEtaToGGCol::iterator etaItr, bool isconstrain=true)
Definition: DTagTool.cxx:748
bool findADTag(EvtRecDTag::DecayMode mode1, EvtRecDTag::DecayMode mode2)
Definition: DTagTool.cxx:315
EvtRecDTagCol::iterator dtag1()
Definition: DTagTool.h:76
vector< EvtRecDTagCol::iterator > vdtag2()
Definition: DTagTool.h:79
EvtRecEtaToGGCol::iterator eta_end()
Definition: DTagTool.h:46
DTagTool()
Definition: DTagTool.cxx:34
bool cosmicandleptonVeto(bool emc=true)
Definition: DTagTool.cxx:1217