16 #include "TDatabasePDG.h"
17 #include "TParticlePDG.h"
18 #include "TObjArray.h"
19 #include "TObjString.h"
32 fMode(-1), fName(
""), fDecay(
""), fPrefix(
""), fNTupleName(
""), fWriteQA(false), fActive(true), fCC(false), fAux(false),
33 fQAMassMin(0.), fQAMassMax(20.), fMean(0.), fSigma(0.01), fThresh(0.), fTagNSig(5.),
34 fQASelector(0), fSelector(0), fNTuple(0)
36 fPdg = TDatabasePDG::Instance();
43 fMode(mode), fName(name), fDecay(dec), fPrefix(pre), fNTupleName(ntpname), fWriteQA(false), fActive(true), fCC(false), fAux(false),
44 fQAMassMin(0.), fQAMassMax(20.), fMean(0.), fSigma(0.01), fThresh(0.), fTagNSig(5.),
45 fQASelector(0), fSelector(0), fNTuple(0)
47 fPdg = TDatabasePDG::Instance();
83 if (
fDecay==
"")
return false;
90 if (toks[1]!=
"->" || n<4)
92 cout <<
"[PndSoftTriggerLine] **** Invalid decay pattern '"<<
fDecay.Data()<<
"'"<<endl;
100 if (toks[
i] ==
"cc") {
fCC =
true;
continue;}
101 if (toks[
i] ==
"->")
continue;
102 if (toks[
i] ==
"pbp0") {
fPdgList.push_back(88880);
continue;}
103 if (toks[
i] ==
"pbp") {
fPdgList.push_back(88888);
continue;}
104 if (toks[
i] ==
"[") {
fPdgList.push_back(-99);
fAux=
true;
continue;}
105 if (toks[
i] ==
"]") {
fPdgList.push_back(-98);
continue;}
107 if (toks[
i].BeginsWith(
"[")) {toks[
i]=toks[
i](1,1000);
fAux=
true;
fPdgList.push_back(-99);}
108 if (toks[
i].EndsWith(
"]")) {toks[
i]=toks[
i](0,toks[
i].Length()-1); flag =
true;}
110 TParticlePDG *part =
fPdg->GetParticle(toks[
i]);
111 if (part)
fPdgList.push_back(part->PdgCode());
114 cout <<
"[PndSoftTriggerLine] **** Unknown particle name '"<<toks[
i].Data()<<
"'"<<endl;
117 if (flag) {
fPdgList.push_back(-98); flag =
false;}
149 TObjArray *tok = s.Tokenize(delim);
150 int N = tok->GetEntries();
151 for (
int i=0;
i<N;++
i)
if (
i<maxtoks) toks[
i] = (((TObjString*)tok->At(
i))->String()).Strip(TString::kBoth);
161 cout <<
"PndSoftTriggerLine: " <<
fName.Data() <<
" ("<<
fPrefix.Data()<<
")"<< endl;
162 cout <<
" Mode code : " <<
fMode << endl;
163 cout <<
" Decay pattern : " <<
fDecay.Data();
166 cout <<
" ( " <<
fPdgList[0]<<
" -> ";
167 for (
size_t i=1;
i<fPdgList.size();++
i)
169 if (fPdgList[
i]==-99) cout <<
" [";
170 else if (fPdgList[
i]==-98) cout <<
" ]";
171 else cout <<
" "<<fPdgList[
i];
173 if (
fCC) cout <<
" (+cc)";
177 cout <<
" Selector Window : " <<
"| m - " <<
fMean <<
" | < " <<
fTagNSig <<
" x " <<
fSigma << endl;
178 cout <<
" Tag threshold : " <<
fThresh << endl;
179 cout <<
" QA enabled : " <<
fWriteQA << endl;
180 cout <<
" Tag active : " <<
fActive << endl;
void SetSelector(double m, double w)
RhoMassParticleSelector * fQASelector
std::vector< int > fPdgList
RhoMassParticleSelector * fSelector
int SplitString(TString s, TString delim, TString *toks, int maxtoks)
void SetQASelector(double m, double w)