PandaRoot
Photos.h
Go to the documentation of this file.
1 #ifndef _Photos_h_included_
2 #define _Photos_h_included_
3 
15 #include <stdarg.h>
16 #include <vector>
17 #include "PhotosParticle.h"
18 #include "PhotosRandom.h"
19 #include "f_Init.h"
20 using std::pair;
21 using std::vector;
22 
23 namespace Photospp {
24 
25 class PhotosParticle;
26 
27 class Photos {
28  public:
29  static const int VER_MAJOR = 3, VER_MINOR = 52;
30  static const int DAT_DAY = 4, DAT_MONTH = 11, DAT_YEAR = 12;
31 
32  public:
35  static void initialize();
36 
39  static void iniInfo();
40 
42  static void processParticle(PhotosParticle *p);
44  static void processBranch(PhotosParticle *p);
45 
47  static void suppressBremForDecay(int count, int motherID, ...);
49  static void suppressBremForBranch(int count, int motherID, ...);
50 
52  static void suppressAll() { isSuppressed = true; }
53 
55  static void forceBremForDecay(int count, int motherID, ...);
56 
58  static void forceBremForBranch(int count, int motherID, ...);
59 
62  static void createHistoryEntries(bool flag, int status);
63 
65  static void ignoreParticlesOfStatus(int status);
66 
68  static void deIgnoreParticlesOfStatus(int status);
69 
71  static bool isStatusCodeIgnored(int status);
72 
73  public:
75  static void setRandomGenerator(double (*gen)());
76 
78  static void setSeed(int iseed1, int iseed2) { PhotosRandom::setSeed(iseed1, iseed2); }
79 
81  static void maxWtInterference(double interference) { phokey_.fint = interference; }
82 
84  static void setInfraredCutOff(double cut_off) { phocop_.xphcut = cut_off; }
85 
87  static void setAlphaQED(double alpha) { phocop_.alpha = alpha; }
88 
90  static void setInterference(bool interference) { phokey_.interf = (int)interference; }
91 
93  static void setDoubleBrem(bool doub) { phokey_.isec = (int)doub; }
94 
96  static void setQuatroBrem(bool quatroBrem) { phokey_.itre = (int)quatroBrem; }
97 
98  /* Key for partial effects of matrix element (in leptonic W decays) */
99  static void setCorrectionWtForW(bool corr) { phokey_.ifw = (int)corr; }
100 
102  static void setExponentiation(bool expo);
103 
105  static void setMeCorrectionWtForScalar(bool corr);
106 
108  static void setMeCorrectionWtForW(bool corr);
109 
111  static void setMeCorrectionWtForZ(bool corr);
112 
114  static void setTopProcessRadiation(bool top) { phokey_.iftop = (int)top; }
115 
116  /* Set if PHOTOS should stop at critical error. True by default.
117  WARNING: These stops are an essential source of debugging information flow
118  from event record to PHOTOS algorithm. Never switch it off! The only exception:
119  you have checked your set-up including particular physics initialization
120  with the substantially large sample and you submit large production. */
121  static void setStopAtCriticalError(bool stop);
122 
124  static void initializeKinematicCorrections(int flag) { phcork_(&flag); }
125 
130  static void forceMassFrom4Vector(bool flag) { massFrom4Vector = flag; }
131 
138  static void forceMassFromEventRecord(int pdgid);
139 
146  static void forceMass(int pdgid, double mass);
147 
149  static void setMomentumConservationThreshold(double threshold) { momentum_conservation_threshold = threshold; }
150 
151  public:
153  static bool isSuppressed;
154 
156  static bool massFrom4Vector;
157 
159  static vector<vector<int> *> *supBremList;
160 
162  static vector<vector<int> *> *forceBremList;
163 
165  static vector<pair<int, double> *> *forceMassList;
166 
168  static vector<int> *ignoreStatusCodeList;
169 
172 
175 
177  static bool meCorrectionWtForZ;
178 
180  static bool meCorrectionWtForW;
181 
184 
187 
189  static double (*randomDouble)();
190 
191  public:
193  Photos &getInstance() { return _instance; }
194 
195  private:
196  /* Singleton: only one instance allowed.
197  Constructor sets default values of PHOTOS parameters */
198  Photos();
199  ~Photos() {}
200  Photos(const Photos &);
201  Photos &operator=(const Photos &);
202  static Photos _instance;
203 };
204 
205 } // namespace Photospp
206 #endif
static vector< int > * ignoreStatusCodeList
Definition: Photos.h:168
static void suppressBremForDecay(int count, int motherID,...)
static void ignoreParticlesOfStatus(int status)
static const int DAT_MONTH
Definition: Photos.h:30
static bool meCorrectionWtForZ
Definition: Photos.h:177
static const int VER_MINOR
Definition: Photos.h:29
static void maxWtInterference(double interference)
Definition: Photos.h:81
static void processBranch(PhotosParticle *p)
Photos & getInstance()
Definition: Photos.h:193
static bool isStatusCodeIgnored(int status)
static void setStopAtCriticalError(bool stop)
static vector< vector< int > * > * forceBremList
Definition: Photos.h:162
static void setInfraredCutOff(double cut_off)
Definition: Photos.h:84
static vector< vector< int > * > * supBremList
Definition: Photos.h:159
struct @18 phocop_
static bool meCorrectionWtForScalar
Definition: Photos.h:174
static bool massFrom4Vector
Definition: Photos.h:156
static void initialize()
static vector< pair< int, double > * > * forceMassList
Definition: Photos.h:165
Definition: Log.h:30
static void initializeKinematicCorrections(int flag)
Definition: Photos.h:124
static const int DAT_YEAR
Definition: Photos.h:30
static double(* randomDouble)()
Definition: Photos.h:189
static bool isSuppressed
Definition: Photos.h:153
static void setInterference(bool interference)
Definition: Photos.h:90
static void setCorrectionWtForW(bool corr)
Definition: Photos.h:99
static void setMomentumConservationThreshold(double threshold)
Definition: Photos.h:149
static void forceBremForDecay(int count, int motherID,...)
static void setMeCorrectionWtForScalar(bool corr)
static void processParticle(PhotosParticle *p)
void phcork_(int *modcor)
static void forceMassFrom4Vector(bool flag)
Definition: Photos.h:130
Abstract base class for particle in the event. This class also handles boosting.
static void setRandomGenerator(double(*gen)())
static double momentum_conservation_threshold
Definition: Photos.h:171
static void createHistoryEntries(bool flag, int status)
static void forceMassFromEventRecord(int pdgid)
static void setSeed(int s1, int s2)
static void setDoubleBrem(bool doub)
Definition: Photos.h:93
struct @19 phokey_
static void forceBremForBranch(int count, int motherID,...)
static void setMeCorrectionWtForZ(bool corr)
static void deIgnoreParticlesOfStatus(int status)
static void setTopProcessRadiation(bool top)
Definition: Photos.h:114
static void setQuatroBrem(bool quatroBrem)
Definition: Photos.h:96
static void suppressAll()
Definition: Photos.h:52
static bool meCorrectionWtForW
Definition: Photos.h:180
double alpha
Definition: f_Init.h:7
static void suppressBremForBranch(int count, int motherID,...)
static void setSeed(int iseed1, int iseed2)
Definition: Photos.h:78
static int historyEntriesStatus
Definition: Photos.h:186
static void iniInfo()
static const int DAT_DAY
Definition: Photos.h:30
static const int VER_MAJOR
Definition: Photos.h:29
static void forceMass(int pdgid, double mass)
static void setAlphaQED(double alpha)
Definition: Photos.h:87
static void setExponentiation(bool expo)
int status[10]
Definition: f_Init.h:24
static void setMeCorrectionWtForW(bool corr)
static bool isCreateHistoryEntries
Definition: Photos.h:183