All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
MCOperator.hh
Go to the documentation of this file.
1 #include <stdlib.h>
2 #include <cmath>
3 #include <vector>
4 #include <string>
5 #include <iostream>
6 #include <EVENT/MCParticle.h>
7 #include <IMPL/MCParticleImpl.h>
8 #include <EVENT/LCCollection.h>
9 #include "DecayChain.hh"
10 #include "ConstantStorage.hh"
11 #include "MathOperator.hh"
12 #include <UTIL/PIDHandler.h>
13 #include <UTIL/LCRelationNavigator.h>
14 
15 #include "marlin/VerbosityLevels.h"
16 #ifndef _MCOperator_hh
17 #define _MCOperator_hh
18 namespace TTbarAnalysis
19 {
20  class MCOperator
21  {
22  public:
23  //
24  // Constants
25  //
26 
27  //
28  // Constructors
29  //
30  MCOperator (EVENT::LCCollection * col, EVENT::LCCollection * rel);
31  virtual ~MCOperator () {};
32  MCOperator(const MCOperator&) = delete;
33  MCOperator& operator=(const MCOperator&) = delete;
34  //
35  // Methods
36  //
37  //bool CheckProcessForPair(int pdg);
38  std::vector< EVENT::MCParticle * > * CheckProcessForPair(int pdg);
39  bool IsReconstructed(EVENT::MCParticle * particle);
40  std::vector< EVENT::MCParticle * > GetPairParticles(int pdg);
41  std::vector< EVENT::MCParticle * > GetPairParticles(PDGTYPE type);
42  float GetAccuracy(EVENT::MCParticle * particle, float a, float b);
43  DecayChain * Construct(std::string name, int pdg, std::vector<PDGTYPE> typeOfProducts);
44  bool CheckForUnification(EVENT::MCParticle * particle, int pdg);
45  bool CheckParticle(EVENT::MCParticle * particle, PDGTYPE type);
46  std::vector< EVENT::MCParticle * > SelectDaughtersOfType(EVENT::MCParticle * parent, PDGTYPE type);
47  PDGTYPE GetParticleType(EVENT::MCParticle * particle);
48  EVENT::MCParticle * FindExceptionalChild(EVENT::MCParticle * parent, PDGTYPE parentType);
49  EVENT::MCParticle * FindYoungestChild(EVENT::MCParticle * parent, PDGTYPE type);
50  bool CheckForColorString(EVENT::MCParticle * daughter, int pdgOfParent);
51  EVENT::MCParticle * GetConsistentDaughter(EVENT::MCParticle * parent, EVENT::MCParticle * service, PDGTYPE type);
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);
54  DecayChain * RefineDecayChain(DecayChain * initial, std::vector<PDGTYPE> typeOfProducts);
55  std::vector< EVENT::MCParticle * > CheckDaughterVisibility(const std::vector< EVENT::MCParticle * > & daughters);
56  private:
57  //
58  // Data
59  //
60  EVENT::LCCollection * myCollection{};
61  EVENT::LCCollection * myRelCollection{};
62  double myPrimaryVertex[3]{};
63  float myAngleCut{};
64  // int myCurrentParentPDG;
65  //
66  // Private methods
67  //
68  EVENT::MCParticle * cureDoubleCharmDecay(std::vector< EVENT::MCParticle * > & selected);
69  };
70 } /* TTbarAnalysis */
71 #endif
DecayChain * Construct(std::string name, int pdg, std::vector< PDGTYPE > typeOfProducts)
Definition: MCOperator.cc:49
bool IsReconstructed(EVENT::MCParticle *particle)
Definition: MCOperator.cc:239
bool CheckCompatibility(const std::vector< EVENT::MCParticle * > &daughters, EVENT::MCParticle *parent, int plusCharge=0)
Definition: MCOperator.cc:594
EVENT::MCParticle * FindYoungestChild(EVENT::MCParticle *parent, PDGTYPE type)
Definition: MCOperator.cc:338
MCOperator & operator=(const MCOperator &)=delete
bool CheckForUnification(EVENT::MCParticle *particle, int pdg)
Definition: MCOperator.cc:106
std::vector< EVENT::MCParticle * > CheckDaughterVisibility(const std::vector< EVENT::MCParticle * > &daughters)
Definition: MCOperator.cc:616
EVENT::MCParticle * cureDoubleCharmDecay(std::vector< EVENT::MCParticle * > &selected)
Definition: MCOperator.cc:394
std::vector< EVENT::MCParticle * > SelectDaughtersOfType(EVENT::MCParticle *parent, PDGTYPE type)
Definition: MCOperator.cc:403
PDGTYPE GetParticleType(EVENT::MCParticle *particle)
Definition: MCOperator.cc:268
std::vector< EVENT::MCParticle * > GetPairParticles(int pdg)
Definition: MCOperator.cc:417
MCOperator(EVENT::LCCollection *col, EVENT::LCCollection *rel)
EVENT::MCParticle * GetConsistentDaughter(EVENT::MCParticle *parent, EVENT::MCParticle *service, PDGTYPE type)
Definition: MCOperator.cc:179
std::vector< EVENT::MCParticle * > * CheckProcessForPair(int pdg)
Definition: MCOperator.cc:496
bool CheckForColorString(EVENT::MCParticle *daughter, int pdgOfParent)
Definition: MCOperator.cc:152
float GetAccuracy(EVENT::MCParticle *particle, float a, float b)
Definition: MCOperator.cc:584
DecayChain * RefineDecayChain(DecayChain *initial, std::vector< PDGTYPE > typeOfProducts)
Definition: MCOperator.cc:19
EVENT::LCCollection * myRelCollection
Definition: MCOperator.hh:61
EVENT::MCParticle * FindExceptionalChild(EVENT::MCParticle *parent, PDGTYPE parentType)
Definition: MCOperator.cc:288
EVENT::LCCollection * myCollection
Definition: MCOperator.hh:60
std::vector< EVENT::MCParticle * > SelectStableCloseDaughters(EVENT::MCParticle *parent, int excludePDG=0, bool selectReco=false, std::vector< EVENT::MCParticle * > *misReconstructed=NULL)
Definition: MCOperator.cc:529
bool CheckParticle(EVENT::MCParticle *particle, PDGTYPE type)
Definition: MCOperator.cc:138