48 ,
const std::string& lineshapePrefix
49 ,
const std::string& lopt
50 ,
const std::vector<double>& numOptions
54 cout <<
"in LineshapeMaker: lineshapePrefix = " << lineshapePrefix << endl;
57 if(0 == tree)
return 0;
60 cout <<
"LineshapeMaker called with " 62 <<
" lopt = " << lopt << endl;
63 cout <<
"final state size = " << tree->
finalState().size() << endl;
70 if(dbThis) cout <<
"LineshapeMaker returns Model independent line shape for PID="<< abs(tree->
getVal().
pdg())<< endl;
78 if(dbThis) cout <<
"LineshapeMaker returns SBW for PID="<< abs(tree->
getVal().
pdg())<< endl;
79 return new SBW(*tree, lineshapePrefix);
82 if(dbThis) cout <<
"LineshapeMaker returns FermiPS_BW for PID="<< abs(tree->
getVal().
pdg())<< endl;
86 if(dbThis) cout <<
"LineshapeMaker returns Histo_BW for PID="<< abs(tree->
getVal().
pdg())<< endl;
87 return new Histo_BW(*tree, lineshapePrefix);
90 if(dbThis) cout <<
"LineshapeMaker returns SBW for PID="<< abs(tree->
getVal().
pdg())<< endl;
91 return new SBW(*tree, lineshapePrefix);
95 cout <<
"LineshapeMaker: " 96 <<
"\n\t> returning Non-resonant lineshape" 98 if(
A_is_in_B(
"Exp", lopt) )
return new NonRes(*tree,
"Exp", lineshapePrefix);
99 else if(
A_is_in_B(
"Pow", lopt) )
return new NonRes(*tree,
"Pow", lineshapePrefix);
100 else if(
A_is_in_B(
"EvtGen", lopt) )
return new NonRes(*tree,
"EvtGen", lineshapePrefix);
101 else return new NonRes(*tree,
"", lineshapePrefix);
104 else if((std::string)_default3bodyBW ==
"PhaseSpace"){
105 if(dbThis) cout <<
"LineshapeMaker returns Histo_BW for PID="<< abs(tree->
getVal().
pdg())<< endl;
106 return new Histo_BW(*tree, lineshapePrefix);
108 else if((std::string)_default3bodyBW ==
"SBW"){
109 if(dbThis) cout <<
"LineshapeMaker returns SBW for PID="<< abs(tree->
getVal().
pdg())<< endl;
110 return new SBW(*tree, lineshapePrefix);
116 if(dbThis) cout <<
"LineshapeMaker returns SBW for PID="<< abs(tree->
getVal().
pdg())<< endl;
117 return new SBW(*tree, lineshapePrefix);
121 if(dbThis) cout <<
"LineshapeMaker returns Histo_BW for PID="<< abs(tree->
getVal().
pdg())<< endl;
122 return new Histo_BW(*tree, lineshapePrefix);
127 if(dbThis) cout <<
"LineshapeMaker: " <<
"\n\t> returning Bugg lineshape" << endl;
128 return new Bugg_BW(*tree, lineshapePrefix);
133 if(dbThis) cout <<
"LineshapeMaker returns BW_BW" << endl;
134 return new BW_BW(*tree, lineshapePrefix);
137 if((abs(tree->
getVal().
pdg())%1000)==113){
139 if(dbThis)cout <<
"LineshapeMaker returning rho-omega lineshape"<< endl;
140 return new Rho0Omega(*tree, lineshapePrefix);
145 if(dbThis) cout <<
"LineshapeMaker: return GS lineshape" << endl;
148 if(dbThis)cout <<
"WARNING: LineshapeMaker:" 149 <<
" returning plain Breit-Wigner (BW_BW) for rho" 151 return new BW_BW(*tree, lineshapePrefix);
155 cout <<
"LineshapeMaker: " 156 <<
"\n\t> returning Lass lineshape" 158 return new GLass(*tree, lineshapePrefix);
160 cout <<
"LineshapeMaker: " 161 <<
"\n\t> returning Lass lineshape" 163 return new Lass(*tree, lineshapePrefix);
165 cout <<
"WARNING: LineshapeMaker:" 166 <<
" returning plain Breit-Wigner (BW_BW) for K0*(1430)" 168 return new BW_BW(*tree, lineshapePrefix);
170 }
else if(abs(tree->
getVal().
pdg()) == 9010221 ){
172 cout <<
"LineshapeMaker: " 173 <<
"\n\t> returning Flatte lineshape" 177 cout <<
"LineshapeMaker: " 178 <<
"\n\t> returning Flatte lineshape" 180 return new Flatte(*tree, lineshapePrefix);
182 cout <<
"WARNING: LineshapeMaker:" 183 <<
" returning plain Breit-Wigner (BW_BW) for f0(980)" 185 return new BW_BW(*tree, lineshapePrefix);
189 cout <<
"LineshapeMaker: "<<
"\n\t> returning Non-resonant lineshape"<< endl;
190 if(
A_is_in_B(
"Exp", lopt) )
return new NonRes(*tree,
"Exp", lineshapePrefix);
191 else if(
A_is_in_B(
"Pow", lopt) )
return new NonRes(*tree,
"Pow", lineshapePrefix);
192 else if(
A_is_in_B(
"EvtGen", lopt) )
return new NonRes(*tree,
"EvtGen", lineshapePrefix);
193 else return new NonRes(*tree,
"", lineshapePrefix);
194 }
else if(
A_is_in_B(
"TopHats", lopt) && numOptions.size() >= 2){
195 return new singleTopHatShape(*tree, numOptions[0], numOptions[1], lineshapePrefix);
197 cout <<
"WARNING: LineshapeMaker:" 198 <<
" returning plain Breit-Wigner (BW_BW) for non-resonant" 200 return new BW_BW(*tree, lineshapePrefix);
203 if(dbThis) cout <<
"LineshapeMaker returns BW_BW" << endl;
204 return new BW_BW(*tree, lineshapePrefix);
const ValueType & getVal() const
bool A_is_in_B(const std::string &a, const std::string &b)
std::string anythingToString(const T &anything)
std::vector< const ValueType * > finalState() const
ILineshape * LineshapeMaker(const AssociatedDecayTree *tree, const std::string &lineshapePrefix, const std::string &lopt, const std::vector< double > &numOptions)
bool isNonResonant() const