6 #include <EVENT/MCParticle.h>
7 #include <IMPL/MCParticleImpl.h>
8 #include <EVENT/LCCollection.h>
12 #include <UTIL/PIDHandler.h>
13 #include <UTIL/LCRelationNavigator.h>
15 #include "marlin/VerbosityLevels.h"
16 #ifndef _MCOperator_hh
17 #define _MCOperator_hh
18 namespace TTbarAnalysis
30 MCOperator (EVENT::LCCollection * col, EVENT::LCCollection * rel);
42 float GetAccuracy(EVENT::MCParticle * particle,
float a,
float b);
52 std::vector< EVENT::MCParticle * >
SelectStableCloseDaughters(EVENT::MCParticle * parent,
int excludePDG = 0,
bool selectReco =
false, std::vector<EVENT::MCParticle *> * misReconstructed = NULL);
53 bool CheckCompatibility(
const std::vector< EVENT::MCParticle * > & daughters, EVENT::MCParticle * parent,
int plusCharge = 0);
55 std::vector< EVENT::MCParticle * >
CheckDaughterVisibility(
const std::vector< EVENT::MCParticle * > & daughters);
DecayChain * Construct(std::string name, int pdg, std::vector< PDGTYPE > typeOfProducts)
bool IsReconstructed(EVENT::MCParticle *particle)
bool CheckCompatibility(const std::vector< EVENT::MCParticle * > &daughters, EVENT::MCParticle *parent, int plusCharge=0)
EVENT::MCParticle * FindYoungestChild(EVENT::MCParticle *parent, PDGTYPE type)
MCOperator & operator=(const MCOperator &)=delete
bool CheckForUnification(EVENT::MCParticle *particle, int pdg)
std::vector< EVENT::MCParticle * > CheckDaughterVisibility(const std::vector< EVENT::MCParticle * > &daughters)
EVENT::MCParticle * cureDoubleCharmDecay(std::vector< EVENT::MCParticle * > &selected)
std::vector< EVENT::MCParticle * > SelectDaughtersOfType(EVENT::MCParticle *parent, PDGTYPE type)
PDGTYPE GetParticleType(EVENT::MCParticle *particle)
std::vector< EVENT::MCParticle * > GetPairParticles(int pdg)
MCOperator(EVENT::LCCollection *col, EVENT::LCCollection *rel)
EVENT::MCParticle * GetConsistentDaughter(EVENT::MCParticle *parent, EVENT::MCParticle *service, PDGTYPE type)
std::vector< EVENT::MCParticle * > * CheckProcessForPair(int pdg)
double myPrimaryVertex[3]
bool CheckForColorString(EVENT::MCParticle *daughter, int pdgOfParent)
float GetAccuracy(EVENT::MCParticle *particle, float a, float b)
DecayChain * RefineDecayChain(DecayChain *initial, std::vector< PDGTYPE > typeOfProducts)
EVENT::LCCollection * myRelCollection
EVENT::MCParticle * FindExceptionalChild(EVENT::MCParticle *parent, PDGTYPE parentType)
EVENT::LCCollection * myCollection
std::vector< EVENT::MCParticle * > SelectStableCloseDaughters(EVENT::MCParticle *parent, int excludePDG=0, bool selectReco=false, std::vector< EVENT::MCParticle * > *misReconstructed=NULL)
bool CheckParticle(EVENT::MCParticle *particle, PDGTYPE type)