2#ifndef CLASS_DTAGTOOL_H
3#define CLASS_DTAGTOOL_H
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"
11#include "CLHEP/Vector/LorentzVector.h"
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;}
51 vector<int>
D0modes() {
return m_d0modes;}
52 vector<int>
Dpmodes() {
return m_dpmodes;}
53 vector<int>
Dsmodes() {
return m_dsmodes;}
56 vector<int>
mode(
int decaymode);
68 bool findDTag(
int mode1,
int mode2,
string smass=
"mbc");
69 bool findDTag(
int mode1,
int tagcharm1,
int mode2,
int tagcharm2,
string smass=
"mbc" );
71 bool findADTag(
int mode1,
int tagcharm1,
int mode2,
int tagcharm2);
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);
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);
105 bool shareTracks(EvtRecDTagCol::iterator iter1, EvtRecDTagCol::iterator iter2);
109 void name(){ cout<<
" I am the dtag tool"<<endl;}
118 bool m_isdtaglistempty;
120 IDataProviderSvc* m_evtSvc;
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;
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;
145 vector<int> m_d0modes;
146 vector<int> m_dpmodes;
147 vector<int> m_dsmodes;
EvtRecTrackCol::iterator EvtRecTrackIterator
double double double * p4