File indexing completed on 2026-09-27 09:20:26
0001 #ifndef _Photos_h_included_
0002 #define _Photos_h_included_
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #include <stdarg.h>
0016 #include <vector>
0017 #include "PhotosParticle.h"
0018 #include "PhotosRandom.h"
0019 #include "photosC.h"
0020
0021
0022
0023 using std::vector;
0024 using std::pair;
0025
0026 namespace Photospp
0027 {
0028
0029 class PhotosParticle;
0030
0031 class Photos
0032 {
0033 public:
0034 static const int VER_MAJOR=3, VER_MINOR=64;
0035 static const int DAT_DAY =18, DAT_MONTH=2, DAT_YEAR=20;
0036
0037
0038 static enum MomentumUnits { DEFAULT_MOMENTUM=-1, MEV, GEV } momentumUnit;
0039
0040
0041 public:
0042
0043
0044
0045 static void initialize();
0046
0047
0048
0049 static void iniInfo();
0050
0051
0052 static void processParticle(PhotosParticle *p);
0053
0054 static void processBranch(PhotosParticle *p);
0055
0056
0057 static void suppressBremForDecay (int count, int motherID, ... );
0058
0059 static void suppressBremForBranch(int count, int motherID, ... );
0060
0061
0062 static void suppressAll() { isSuppressed=true; }
0063
0064
0065 static void forceBremForDecay (int count, int motherID, ... );
0066
0067
0068 static void forceBremForBranch(int count, int motherID, ... );
0069
0070
0071
0072
0073 static void IPHEKL_setPi0KLnoEmission(int m);
0074
0075 static bool IPHQRK_setQarknoEmission(int MODCOR, int PDGID);
0076
0077
0078
0079 static void createHistoryEntries(bool flag, int status);
0080
0081
0082 static void ignoreParticlesOfStatus(int status);
0083
0084
0085 static void deIgnoreParticlesOfStatus(int status);
0086
0087
0088 static bool isStatusCodeIgnored(int status);
0089 public:
0090
0091 static void setRandomGenerator( double (*gen)() );
0092
0093
0094 static void setSeed(int iseed1, int iseed2) { PhotosRandom::setSeed(iseed1,iseed2); }
0095
0096
0097 static void maxWtInterference(double interference) { phokey.fint=interference; }
0098
0099
0100 static void setInfraredCutOff(double cut_off) { phocop.xphcut=cut_off; }
0101
0102
0103 static void setAlphaQED(double alpha) { phocop.alpha=alpha; }
0104
0105
0106 static void setInterference(bool interference) { phokey.interf=(int)interference; }
0107
0108
0109 static void setDoubleBrem(bool doub) { phokey.isec=(int)doub; }
0110
0111
0112 static void setQuatroBrem(bool quatroBrem) { phokey.itre=(int)quatroBrem; }
0113
0114
0115 static void setCorrectionWtForW(bool corr) { phokey.ifw=(int)corr; }
0116
0117
0118 static void setExponentiation(bool expo);
0119
0120
0121 static void setPairEmission(bool ifpair);
0122
0123
0124 static void setPhotonEmission(bool ifphot);
0125
0126
0127 static void setMeCorrectionWtForScalar(bool corr);
0128
0129
0130 static void setMeCorrectionWtForW(bool corr);
0131
0132
0133 static void setMeCorrectionWtForZ(bool corr);
0134
0135
0136 static void setTopProcessRadiation(bool top) { phokey.iftop=(int)top; }
0137
0138
0139 static void setMomentumUnit(MomentumUnits unit) { momentumUnit = unit; }
0140
0141
0142
0143
0144
0145
0146 static void setStopAtCriticalError(bool stop);
0147
0148
0149 static void initializeKinematicCorrections(int flag) { PHCORK(flag); }
0150
0151
0152
0153
0154
0155 static void forceMassFrom4Vector(bool flag) { massFrom4Vector=flag; }
0156
0157
0158
0159
0160
0161
0162
0163 static void forceMassFromEventRecord(int pdgid);
0164
0165
0166
0167
0168
0169
0170
0171 static void forceMass(int pdgid, double mass);
0172
0173
0174 static void setMomentumConservationThreshold(double threshold){momentum_conservation_threshold=threshold; }
0175
0176
0177 static void setEventNo(int iEvt){EventNo=iEvt; }
0178 public:
0179
0180
0181
0182 static int EventNo;
0183
0184
0185 static bool isSuppressed;
0186
0187
0188 static bool massFrom4Vector;
0189
0190
0191 static vector<vector<int>* > *supBremList;
0192
0193
0194 static vector<vector<int>* > *forceBremList;
0195
0196
0197 static vector<pair<int,double>* > *forceMassList;
0198
0199
0200 static vector<int > *ignoreStatusCodeList;
0201
0202
0203 static double momentum_conservation_threshold;
0204
0205
0206 static bool meCorrectionWtForScalar;
0207
0208
0209 static bool meCorrectionWtForZ;
0210
0211
0212 static bool meCorrectionWtForW;
0213
0214
0215 static bool isCreateHistoryEntries;
0216
0217
0218 static bool IfPair;
0219
0220
0221 static bool IfPhot;
0222
0223
0224
0225 static int historyEntriesStatus;
0226
0227
0228 static double (*randomDouble)();
0229 public:
0230
0231 Photos& getInstance() { return _instance; }
0232 private:
0233
0234
0235 Photos();
0236 ~Photos() {}
0237 Photos(const Photos&);
0238 Photos& operator=(const Photos&);
0239 static Photos _instance;
0240 };
0241
0242 }
0243 #endif
0244