00001 #ifndef _AsciiData_h_ 00002 #define _AsciiData_h_ 00003 00004 #include <string> 00005 #include <iostream> 00006 #include <vector> 00007 00008 #include "dmplib.h" 00009 00010 using std::string; 00011 00012 class VERSIONNUM : public Tagged { 00013 public: 00014 VERSIONNUM() {} ; 00015 public: 00016 int major; 00017 int minor; 00018 friend std::istream& operator>>(std::istream&, VERSIONNUM& x); 00019 friend std::ostream& operator<<(std::ostream&, const VERSIONNUM& x); 00020 }; 00021 00022 class EVHEAD : public Tagged { 00023 public: 00024 EVHEAD() {}; 00025 public: 00026 int runNo; 00027 int eventNo; 00028 friend std::istream& operator>>(std::istream&, EVHEAD& x); 00029 friend std::ostream& operator<<(std::ostream&, const EVHEAD& x); 00030 }; 00031 00032 class DECAYMODE : public Tagged { 00033 public: 00034 DECAYMODE () {}; 00035 public: 00036 int size; 00037 int data[10]; 00038 friend std::istream& operator>>(std::istream&, DECAYMODE& x); 00039 friend std::ostream& operator<<(std::ostream&, const DECAYMODE& x); 00040 }; 00041 00042 class TrackTruthType { 00043 public: 00044 TrackTruthType() {}; 00045 public: 00046 int trackIndex; 00047 int PDGCode; 00048 float PDGCharge; 00049 int v0Index; 00050 int v1Index; 00051 float px; 00052 float py; 00053 float pz; 00054 float E; 00055 int minDaughterIndex; 00056 int maxDaughterIndex; 00057 }; 00058 00059 class TRACKTRUTH : public Tagged { 00060 public: 00061 TRACKTRUTH() {}; 00062 public: 00063 int nTruth; 00064 std::vector<TrackTruthType> truthCol; 00065 friend std::istream& operator>>(std::istream&, TRACKTRUTH& x); 00066 friend std::ostream& operator<<(std::ostream&, const TRACKTRUTH& x); 00067 }; 00068 00069 class VertexTruthType { 00070 public: 00071 VertexTruthType() {}; 00072 public: 00073 int vertexIndex; 00074 int parentTrackIndex; 00075 float posX; 00076 float posY; 00077 float posZ; 00078 float time; 00079 }; 00080 00081 class VERTEXTRUTH : public Tagged { 00082 public: 00083 VERTEXTRUTH() {}; 00084 public: 00085 int nTruth; 00086 std::vector<VertexTruthType> truthCol; 00087 friend std::istream& operator>>(std::istream&, VERTEXTRUTH& x); 00088 friend std::ostream& operator<<(std::ostream&, const VERTEXTRUTH& x); 00089 }; 00090 00091 00092 class MdcTruthType { 00093 public: 00094 MdcTruthType() {}; 00095 public: 00096 int trackIndex; 00097 int layerNo; 00098 int cellNo; 00099 float edep; 00100 float driftD; 00101 float posX; 00102 float posY; 00103 float posZ; 00104 int posFlag; 00105 friend std::istream& operator>>(std::istream&, MdcTruthType& x); 00106 friend std::ostream& operator<<(std::ostream&, const MdcTruthType& x); 00107 }; 00108 00109 class MDCTRUTH : public Tagged { 00110 public: 00111 MDCTRUTH() {}; 00112 public: 00113 int nTruth; 00114 std::vector<MdcTruthType> truthCol; 00115 friend std::istream& operator>>(std::istream&, MDCTRUTH& x); 00116 friend std::ostream& operator<<(std::ostream&, const MDCTRUTH& x); 00117 }; 00118 00119 class TofTruthType { 00120 public: 00121 TofTruthType() {}; 00122 public: 00123 int trackIndex; 00124 int partId; 00125 int scinNb; 00126 float posX; 00127 float posY; 00128 float posZ; 00129 float px; 00130 float py; 00131 float pz; 00132 float trackL; 00133 float time; 00134 friend std::istream& operator>>(std::istream&, TofTruthType& x); 00135 friend std::ostream& operator<<(std::ostream&, const TofTruthType& x); 00136 }; 00137 00138 class TOFTRUTH : public Tagged { 00139 public: 00140 TOFTRUTH() {}; 00141 public: 00142 int nTruth; 00143 std::vector<TofTruthType> truthCol; 00144 friend std::istream& operator>>(std::istream&, TOFTRUTH& x); 00145 friend std::ostream& operator<<(std::ostream&, const TOFTRUTH& x); 00146 }; 00147 00148 class EmcTruthType { 00149 public: 00150 EmcTruthType() {}; 00151 public: 00152 int trackIndex; 00153 int partId; 00154 int numTheta; 00155 int numPhi; 00156 float posX; 00157 float posY; 00158 float posZ; 00159 float px; 00160 float py; 00161 float pz; 00162 float totalEdep; 00163 friend std::istream& operator>>(std::istream&, EmcTruthType& x); 00164 friend std::ostream& operator<<(std::ostream&, const EmcTruthType& x); 00165 }; 00166 00167 class EMCTRUTH : public Tagged { 00168 public: 00169 EMCTRUTH() {}; 00170 public: 00171 int nTruth; 00172 std::vector<EmcTruthType> truthCol; 00173 friend std::istream& operator>>(std::istream&, EMCTRUTH& x); 00174 friend std::ostream& operator<<(std::ostream&, const EMCTRUTH& x); 00175 }; 00176 00177 class MucTruthType { 00178 public: 00179 MucTruthType() {}; 00180 public: 00181 int trackIndex; 00182 int partId; 00183 int segId; 00184 int gapId; 00185 int stripId; 00186 float posX; 00187 float posY; 00188 float posZ; 00189 float px; 00190 float py; 00191 float pz; 00192 friend std::istream& operator>>(std::istream&, MucTruthType& x); 00193 friend std::ostream& operator<<(std::ostream&, const MucTruthType& x); 00194 }; 00195 00196 class MUCTRUTH : public Tagged { 00197 public: 00198 MUCTRUTH() {}; 00199 public: 00200 int nTruth; 00201 std::vector<MucTruthType> truthCol; 00202 friend std::istream& operator>>(std::istream&, MUCTRUTH& x); 00203 friend std::ostream& operator<<(std::ostream&, const MUCTRUTH& x); 00204 }; 00205 00206 class MdcDigiType { 00207 public: 00208 MdcDigiType() {}; 00209 public: 00210 int trackIndex; 00211 int layerNo; 00212 int cellNo; 00213 float energyDeposit; 00214 float driftTime; 00215 friend std::istream& operator>>(std::istream&, MdcDigiType& x); 00216 friend std::ostream& operator<<(std::ostream&, const MdcDigiType& x); 00217 }; 00218 00219 class MDCDIGI : public Tagged { 00220 public: 00221 MDCDIGI() {}; 00222 public: 00223 int nDigi; 00224 std::vector<MdcDigiType> digiCol; 00225 friend std::istream& operator>>(std::istream&, MDCDIGI& x); 00226 friend std::ostream& operator<<(std::ostream&, const MDCDIGI& x); 00227 }; 00228 00229 class TofDigiType { 00230 public: 00231 TofDigiType() {}; 00232 public: 00233 int trackIndex; 00234 int partId; 00235 int scinNb; 00236 float forwADC; 00237 float forwTDC; 00238 float backADC; 00239 float backTDC; 00240 00241 friend std::istream& operator>>(std::istream&, TofDigiType& x); 00242 friend std::ostream& operator<<(std::ostream&, const TofDigiType& x); 00243 }; 00244 00245 class TOFDIGI : public Tagged { 00246 public: 00247 TOFDIGI() {}; 00248 public: 00249 int nDigi; 00250 std::vector<TofDigiType> digiCol; 00251 friend std::istream& operator>>(std::istream&, TOFDIGI& x); 00252 friend std::ostream& operator<<(std::ostream&, const TOFDIGI& x); 00253 }; 00254 00255 class EmcDigiType { 00256 public: 00257 EmcDigiType() {}; 00258 public: 00259 int trackIndex; 00260 int partId; 00261 int numTheta; 00262 int numPhi; 00263 float energyDeposit; 00264 float hitTime; 00265 friend std::istream& operator>>(std::istream&, EmcDigiType& x); 00266 friend std::ostream& operator<<(std::ostream&, const EmcDigiType& x); 00267 }; 00268 00269 class EMCDIGI : public Tagged { 00270 public: 00271 EMCDIGI() {}; 00272 public: 00273 int nDigi; 00274 std::vector<EmcDigiType> digiCol; 00275 friend std::istream& operator>>(std::istream&, EMCDIGI& x); 00276 friend std::ostream& operator<<(std::ostream&, const EMCDIGI& x); 00277 }; 00278 00279 class MucDigiType { 00280 public: 00281 MucDigiType() {}; 00282 public: 00283 int trackIndex; 00284 int partNo; 00285 int segNo; 00286 int gapNo; 00287 int stripNo; 00288 friend std::istream& operator>>(std::istream&, MucDigiType& x); 00289 friend std::ostream& operator<<(std::ostream&, const MucDigiType& x); 00290 }; 00291 00292 class MUCDIGI : public Tagged { 00293 public: 00294 MUCDIGI() {}; 00295 public: 00296 int nDigi; 00297 std::vector<MucDigiType> digiCol; 00298 friend std::istream& operator>>(std::istream&, MUCDIGI& x); 00299 friend std::ostream& operator<<(std::ostream&, const MUCDIGI& x); 00300 }; 00301 00302 class EVENT : public Tagged { 00303 public: 00304 EVENT() {}; 00305 public: 00306 EVHEAD header; 00307 DECAYMODE decayMode; 00308 TRACKTRUTH trackTruth; 00309 VERTEXTRUTH vertexTruth; 00310 MDCTRUTH mdcTruth; 00311 MDCDIGI mdcDigi; 00312 TOFTRUTH tofTruth; 00313 TOFDIGI tofDigi; 00314 EMCTRUTH emcTruth; 00315 EMCDIGI emcDigi; 00316 MUCTRUTH mucTruth; 00317 MUCDIGI mucDigi; 00318 friend std::istream& operator>>(std::istream&, EVENT& x); 00319 friend std::ostream& operator<<(std::ostream&, const EVENT& x); 00320 }; 00321 00322 #endif // _AsciiData_h_