33 #include "TDatabasePDG.h"
34 #include "TParticlePDG.h"
72 fParticlePDG=TDatabasePDG::Instance()->GetParticle(pdgType.c_str());
101 fParticlePDG=TDatabasePDG::Instance()->GetParticle(pdgcode);
122 fParticlePDG=TDatabasePDG::Instance()->GetParticle(pdgType.c_str());
129 fParticlePDG=TDatabasePDG::Instance()->GetParticle(pdgcode);
136 fDaughterPDG.push_back(TDatabasePDG::Instance()->GetParticle(dtype.c_str()));
143 fDaughterPDG.push_back(TDatabasePDG::Instance()->GetParticle(pdgcode));
170 cout <<
"]("<<
fName<<
")";
246 for (
int i=0;
i<3;
i++) {
251 if (lp[0]!=lp[1] && lp[1]!=lp[2] && lp[0]!=lp[2]) {
253 tmpL.
Combine(fDList[0],fDList[1]);
257 else if (lp[0]!=lp[1] || lp[1]!=lp[2] || lp[0]!=lp[2]) {
259 if (lp[0]==lp[1] && lp[0]!=lp[2]) {id1=0; id2=2;}
260 if (lp[0]==lp[2] && lp[0]!=lp[1]) {id1=0; id2=1;}
261 if (lp[1]==lp[2] && lp[0]!=lp[1]) {id1=1; id2=0;}
264 if (id1!=-1 && id2!=-1) {
266 tmpL.
Combine(fDList[id1],fDList[id1]);
289 for (Int_t comb_i=0; comb_i<endpos; ++comb_i) {
290 for (Int_t comb_j=comb_i+1; comb_j<endpos; ++comb_j) {
291 for (Int_t comb_k=comb_j+1; comb_k<endpos; ++comb_k) {
292 if ( !l1[comb_i]->Overlaps( l1[comb_j] )
293 && !l1[comb_j]->Overlaps( l1[comb_k] )
294 && !l1[comb_i]->Overlaps( l1[comb_k] ) ) {
295 vl=l1[comb_i]->P4()+l1[comb_j]->P4()+l1[comb_k]->P4();
296 charge=l1[comb_i]->Charge()+l1[comb_j]->Charge()+l1[comb_k]->Charge();
301 c.
SetMarker(l1[comb_i]->GetMarker(0)|l1[comb_j]->GetMarker(0)|l1[comb_k]->GetMarker(0),0);
302 c.
SetMarker(l1[comb_i]->GetMarker(1)|l1[comb_j]->GetMarker(1)|l1[comb_k]->GetMarker(1),1);
303 c.
SetMarker(l1[comb_i]->GetMarker(2)|l1[comb_j]->GetMarker(2)|l1[comb_k]->GetMarker(2),2);
304 c.
SetMarker(l1[comb_i]->GetMarker(3)|l1[comb_j]->GetMarker(3)|l1[comb_k]->GetMarker(3),3);
350 }
else {
return ""; }
PndListProvider(std::string name, std::string pdgType="")
void AddDaughterLinkSimple(const RhoCandidate *, bool verbose=true)
RhoMinusParticleSelector * fMinusSel
void SetType(std::string pdgType)
void Append(const RhoCandidate *c)
void AddDecayProduct(std::string dname)
RhoMassParticleSelector * fMassSel
std::vector< PndListProvider * > fDaughterPointers
virtual ~PndListProvider()
void Combine(RhoCandList &l1, RhoCandList &l2)
RhoPlusParticleSelector * fPlusSel
void SetMassSelector(double mean, double width)
ArgVector fDaughterListNames
void Select(RhoParticleSelectorBase *pidmgr)
void AddDaughterPointer(PndListProvider *p)
Int_t GetNumberOfTracks() const
std::string GetDecayProdName(int i)
int GetDaughterType(int i)
void SetCandList(RhoCandList &cl)
std::vector< TParticlePDG * > fDaughterPDG
void Put(const RhoCandidate *, Int_t i=-1)
void SetMarker(UInt_t l, UInt_t m)
void AddDaughterType(std::string dtype)
TParticlePDG * fParticlePDG
void GetCandList(RhoCandList &tl)