Changeset 95a917c in git
- Timestamp:
- May 28, 2021, 6:07:25 PM (3 years ago)
- Branches:
- master
- Children:
- 302624f
- Parents:
- 91eef4d
- Files:
-
- 36 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
Makefile
r91eef4d r95a917c 232 232 classes/DelphesClasses.h \ 233 233 classes/DelphesFactory.h \ 234 classes/DelphesHepMC3Reader.h \235 234 modules/Delphes.h \ 236 235 external/ExRootAnalysis/ExRootProgressBar.h \ 237 236 external/ExRootAnalysis/ExRootTreeBranch.h \ 238 external/ExRootAnalysis/ExRootTreeWriter.h 237 external/ExRootAnalysis/ExRootTreeWriter.h \ 238 external/HepMC3/ReaderAscii.h \ 239 external/HepMC3/GenEvent.h \ 240 external/HepMC3/GenCrossSection.h \ 241 external/HepMC3/GenPdfInfo.h \ 242 external/HepMC3/GenParticle.h \ 243 external/HepMC3/GenVertex.h \ 244 external/HepMC3/Units.h 239 245 DelphesLHEF$(ExeSuf): \ 240 246 tmp/readers/DelphesLHEF.$(ObjSuf) … … 672 678 tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf): \ 673 679 external/Hector/H_VerticalQuadrupole.$(SrcSuf) 680 tmp/external/HepMC3/GenCrossSection.$(ObjSuf): \ 681 external/HepMC3/GenCrossSection.$(SrcSuf) \ 682 external/HepMC3/GenCrossSection.h \ 683 external/HepMC3/GenEvent.h 684 tmp/external/HepMC3/GenEvent.$(ObjSuf): \ 685 external/HepMC3/GenEvent.$(SrcSuf) \ 686 external/HepMC3/GenEvent.h \ 687 external/HepMC3/GenParticle.h \ 688 external/HepMC3/GenVertex.h \ 689 external/HepMC3/Data/GenEventData.h 690 tmp/external/HepMC3/GenHeavyIon.$(ObjSuf): \ 691 external/HepMC3/GenHeavyIon.$(SrcSuf) \ 692 external/HepMC3/GenHeavyIon.h 693 tmp/external/HepMC3/GenParticle.$(ObjSuf): \ 694 external/HepMC3/GenParticle.$(SrcSuf) \ 695 external/HepMC3/GenParticle.h \ 696 external/HepMC3/GenVertex.h \ 697 external/HepMC3/GenEvent.h \ 698 external/HepMC3/Setup.h \ 699 external/HepMC3/Attribute.h 700 tmp/external/HepMC3/GenPdfInfo.$(ObjSuf): \ 701 external/HepMC3/GenPdfInfo.$(SrcSuf) \ 702 external/HepMC3/GenPdfInfo.h 703 tmp/external/HepMC3/GenRunInfo.$(ObjSuf): \ 704 external/HepMC3/GenRunInfo.$(SrcSuf) \ 705 external/HepMC3/GenRunInfo.h \ 706 external/HepMC3/Data/GenRunInfoData.h 707 tmp/external/HepMC3/GenVertex.$(ObjSuf): \ 708 external/HepMC3/GenVertex.$(SrcSuf) \ 709 external/HepMC3/GenVertex.h \ 710 external/HepMC3/GenParticle.h \ 711 external/HepMC3/GenEvent.h \ 712 external/HepMC3/Setup.h \ 713 external/HepMC3/Attribute.h 714 tmp/external/HepMC3/ReaderAscii.$(ObjSuf): \ 715 external/HepMC3/ReaderAscii.$(SrcSuf) \ 716 external/HepMC3/ReaderAscii.h \ 717 external/HepMC3/GenEvent.h \ 718 external/HepMC3/GenParticle.h \ 719 external/HepMC3/GenVertex.h \ 720 external/HepMC3/Units.h 721 tmp/external/HepMC3/ReaderAsciiHepMC2.$(ObjSuf): \ 722 external/HepMC3/ReaderAsciiHepMC2.$(SrcSuf) \ 723 external/HepMC3/ReaderAsciiHepMC2.h \ 724 external/HepMC3/GenEvent.h \ 725 external/HepMC3/GenVertex.h \ 726 external/HepMC3/GenParticle.h \ 727 external/HepMC3/GenHeavyIon.h \ 728 external/HepMC3/GenPdfInfo.h \ 729 external/HepMC3/Setup.h 730 tmp/external/HepMC3/Setup.$(ObjSuf): \ 731 external/HepMC3/Setup.$(SrcSuf) \ 732 external/HepMC3/Setup.h 674 733 tmp/external/TrackCovariance/AcceptanceClx.$(ObjSuf): \ 675 734 external/TrackCovariance/AcceptanceClx.$(SrcSuf) … … 1213 1272 tmp/external/Hector/H_VerticalKicker.$(ObjSuf) \ 1214 1273 tmp/external/Hector/H_VerticalQuadrupole.$(ObjSuf) \ 1274 tmp/external/HepMC3/GenCrossSection.$(ObjSuf) \ 1275 tmp/external/HepMC3/GenEvent.$(ObjSuf) \ 1276 tmp/external/HepMC3/GenHeavyIon.$(ObjSuf) \ 1277 tmp/external/HepMC3/GenParticle.$(ObjSuf) \ 1278 tmp/external/HepMC3/GenPdfInfo.$(ObjSuf) \ 1279 tmp/external/HepMC3/GenRunInfo.$(ObjSuf) \ 1280 tmp/external/HepMC3/GenVertex.$(ObjSuf) \ 1281 tmp/external/HepMC3/ReaderAscii.$(ObjSuf) \ 1282 tmp/external/HepMC3/ReaderAsciiHepMC2.$(ObjSuf) \ 1283 tmp/external/HepMC3/Setup.$(ObjSuf) \ 1215 1284 tmp/external/TrackCovariance/AcceptanceClx.$(ObjSuf) \ 1216 1285 tmp/external/TrackCovariance/ObsTrk.$(ObjSuf) \ … … 1906 1975 @touch $@ 1907 1976 1977 external/HepMC3/Units.h: \ 1978 external/HepMC3/Errors.h \ 1979 external/HepMC3/Setup.h \ 1980 external/HepMC3/FourVector.h 1981 @touch $@ 1982 1908 1983 external/fastjet/ClusterSequence.hh: \ 1909 1984 external/fastjet/PseudoJet.hh \ … … 1990 2065 @touch $@ 1991 2066 2067 modules/EnergyScale.h: \ 2068 classes/DelphesModule.h 2069 @touch $@ 2070 1992 2071 modules/Isolation.h: \ 1993 classes/DelphesModule.h1994 @touch $@1995 1996 modules/EnergyScale.h: \1997 2072 classes/DelphesModule.h 1998 2073 @touch $@ … … 2041 2116 modules/TrackPileUpSubtractor.h: \ 2042 2117 classes/DelphesModule.h 2118 @touch $@ 2119 2120 external/HepMC3/ReaderAscii.h: \ 2121 external/HepMC3/Reader.h \ 2122 external/HepMC3/GenEvent.h 2043 2123 @touch $@ 2044 2124 … … 2099 2179 @touch $@ 2100 2180 2181 external/HepMC3/Data/GenEventData.h: \ 2182 external/HepMC3/Data/GenParticleData.h \ 2183 external/HepMC3/Data/GenVertexData.h \ 2184 external/HepMC3/Units.h 2185 @touch $@ 2186 2101 2187 modules/PileUpMerger.h: \ 2102 2188 classes/DelphesModule.h 2189 @touch $@ 2190 2191 external/HepMC3/GenPdfInfo.h: \ 2192 external/HepMC3/Attribute.h 2103 2193 @touch $@ 2104 2194 … … 2132 2222 modules/Cloner.h: \ 2133 2223 classes/DelphesModule.h 2224 @touch $@ 2225 2226 external/HepMC3/ReaderAsciiHepMC2.h: \ 2227 external/HepMC3/Reader.h \ 2228 external/HepMC3/GenEvent.h 2134 2229 @touch $@ 2135 2230 … … 2191 2286 @touch $@ 2192 2287 2288 external/HepMC3/Attribute.h: \ 2289 external/HepMC3/GenParticle_fwd.h \ 2290 external/HepMC3/GenVertex_fwd.h 2291 @touch $@ 2292 2193 2293 modules/VertexSorter.h: \ 2194 2294 classes/DelphesModule.h … … 2230 2330 @touch $@ 2231 2331 2332 external/HepMC3/GenRunInfo.h: \ 2333 external/HepMC3/Units.h \ 2334 external/HepMC3/Attribute.h 2335 @touch $@ 2336 2232 2337 modules/PdgCodeFilter.h: \ 2233 2338 classes/DelphesModule.h … … 2240 2345 classes/DelphesSTDHEPReader.h: \ 2241 2346 classes/DelphesXDRReader.h 2347 @touch $@ 2348 2349 external/HepMC3/GenEvent.h: \ 2350 external/HepMC3/Units.h \ 2351 external/HepMC3/GenParticle_fwd.h \ 2352 external/HepMC3/GenVertex_fwd.h \ 2353 external/HepMC3/GenPdfInfo_fwd.h \ 2354 external/HepMC3/GenHeavyIon_fwd.h \ 2355 external/HepMC3/GenCrossSection_fwd.h \ 2356 external/HepMC3/GenHeavyIon.h \ 2357 external/HepMC3/GenPdfInfo.h \ 2358 external/HepMC3/GenCrossSection.h \ 2359 external/HepMC3/GenRunInfo.h 2360 @touch $@ 2361 2362 external/HepMC3/GenHeavyIon.h: \ 2363 external/HepMC3/Attribute.h 2242 2364 @touch $@ 2243 2365 … … 2310 2432 @touch $@ 2311 2433 2434 external/HepMC3/GenVertex.h: \ 2435 external/HepMC3/GenParticle_fwd.h \ 2436 external/HepMC3/GenVertex_fwd.h \ 2437 external/HepMC3/Data/GenVertexData.h \ 2438 external/HepMC3/FourVector.h \ 2439 external/HepMC3/GenEvent.h 2440 @touch $@ 2441 2312 2442 modules/ClusterCounting.h: \ 2313 2443 classes/DelphesModule.h … … 2321 2451 external/fastjet/JetDefinition.hh \ 2322 2452 external/fastjet/PseudoJet.hh 2453 @touch $@ 2454 2455 external/HepMC3/GenCrossSection.h: \ 2456 external/HepMC3/Attribute.h 2323 2457 @touch $@ 2324 2458 … … 2373 2507 modules/StatusPidFilter.h: \ 2374 2508 classes/DelphesModule.h 2509 @touch $@ 2510 2511 external/HepMC3/GenParticle.h: \ 2512 external/HepMC3/Data/GenParticleData.h \ 2513 external/HepMC3/FourVector.h \ 2514 external/HepMC3/GenParticle_fwd.h \ 2515 external/HepMC3/GenVertex_fwd.h \ 2516 external/HepMC3/GenEvent.h 2375 2517 @touch $@ 2376 2518 -
doc/genMakefile.tcl
r91eef4d r95a917c 321 321 dictDeps {DISPLAY_DICT} {display/DisplayLinkDef.h} 322 322 323 sourceDeps {DELPHES} {classes/*.cc} {modules/*.cc} {external/ExRootAnalysis/*.cc} {external/Hector/*.cc} {external/TrackCovariance/*.cc} 323 sourceDeps {DELPHES} {classes/*.cc} {modules/*.cc} {external/ExRootAnalysis/*.cc} {external/Hector/*.cc} {external/TrackCovariance/*.cc} {external/HepMC3/*.cc} 324 324 325 325 sourceDeps {FASTJET} {modules/FastJet*.cc} {modules/RunPUPPI.cc} {external/PUPPI/*.cc} {external/fastjet/*.cc} {external/fastjet/tools/*.cc} {external/fastjet/plugins/*/*.cc} {external/fastjet/contribs/*/*.cc} -
readers/DelphesHepMC3.cpp
r91eef4d r95a917c 18 18 19 19 #include <iostream> 20 #include <fstream> 21 #include <memory> 20 22 #include <sstream> 21 23 #include <stdexcept> 22 24 25 #include <map> 26 23 27 #include <signal.h> 28 #include <stdio.h> 29 #include <stdlib.h> 24 30 25 31 #include "TApplication.h" … … 35 41 #include "classes/DelphesClasses.h" 36 42 #include "classes/DelphesFactory.h" 37 #include "classes/DelphesHepMC3Reader.h"38 43 #include "modules/Delphes.h" 39 44 … … 42 47 #include "ExRootAnalysis/ExRootTreeWriter.h" 43 48 49 #include "HepMC3/ReaderAscii.h" 50 #include "HepMC3/GenEvent.h" 51 #include "HepMC3/GenCrossSection.h" 52 #include "HepMC3/GenPdfInfo.h" 53 #include "HepMC3/GenParticle.h" 54 #include "HepMC3/GenVertex.h" 55 #include "HepMC3/Units.h" 56 44 57 using namespace std; 58 using namespace HepMC3; 59 60 map<Int_t, pair<Int_t, Int_t> > gMotherMap; 61 map<Int_t, pair<Int_t, Int_t> > gDaughterMap; 62 63 //--------------------------------------------------------------------------- 64 65 void AnalyzeParticle(Bool_t in, Int_t counter, 66 Double_t momentumCoefficient, 67 Double_t positionCoefficient, 68 shared_ptr<HepMC3::GenVertex> vertex, 69 shared_ptr<HepMC3::GenParticle> particle, 70 DelphesFactory *factory, 71 TObjArray *allParticleOutputArray, 72 TObjArray *stableParticleOutputArray, 73 TObjArray *partonOutputArray) 74 { 75 map<Int_t, pair<Int_t, Int_t> >::iterator itMotherMap; 76 map<Int_t, pair<Int_t, Int_t> >::iterator itDaughterMap; 77 78 Candidate *candidate; 79 TDatabasePDG *pdg; 80 TParticlePDG *pdgParticle; 81 Int_t pdgCode; 82 83 Int_t pid, status, inVertexCode, outVertexCode; 84 Double_t px, py, pz, e, mass; 85 Double_t x, y, z, t; 86 87 pdg = TDatabasePDG::Instance(); 88 89 candidate = factory->NewCandidate(); 90 91 pid = particle->pid(); 92 px = particle->momentum().px(); 93 py = particle->momentum().py(); 94 pz = particle->momentum().pz(); 95 e = particle->momentum().e(); 96 mass = particle->generated_mass(); 97 x = vertex->position().x(); 98 y = vertex->position().y(); 99 z = vertex->position().z(); 100 t = vertex->position().t(); 101 status = particle->status(); 102 103 outVertexCode = vertex->id(); 104 inVertexCode = particle->end_vertex() ? particle->end_vertex()->id() : 0; 105 106 candidate->PID = pid; 107 pdgCode = TMath::Abs(pid); 108 109 candidate->Status = status; 110 111 pdgParticle = pdg->GetParticle(pid); 112 candidate->Charge = pdgParticle ? int(pdgParticle->Charge() / 3.0) : -999; 113 candidate->Mass = mass; 114 115 candidate->Momentum.SetPxPyPzE(px, py, pz, e); 116 if(momentumCoefficient != 1.0) 117 { 118 candidate->Momentum *= momentumCoefficient; 119 } 120 121 candidate->M2 = 1; 122 candidate->D2 = 1; 123 124 if(in) 125 { 126 candidate->M1 = 1; 127 candidate->Position.SetXYZT(0.0, 0.0, 0.0, 0.0); 128 } 129 else 130 { 131 candidate->M1 = outVertexCode; 132 candidate->Position.SetXYZT(x, y, z, t); 133 if(positionCoefficient != 1.0) 134 { 135 candidate->Position *= positionCoefficient; 136 } 137 138 itDaughterMap = gDaughterMap.find(outVertexCode); 139 if(itDaughterMap == gDaughterMap.end()) 140 { 141 gDaughterMap[outVertexCode] = make_pair(counter, counter); 142 } 143 else 144 { 145 itDaughterMap->second.second = counter; 146 } 147 } 148 149 if(inVertexCode < 0) 150 { 151 candidate->D1 = inVertexCode; 152 153 itMotherMap = gMotherMap.find(inVertexCode); 154 if(itMotherMap == gMotherMap.end()) 155 { 156 gMotherMap[inVertexCode] = make_pair(counter, -1); 157 } 158 else 159 { 160 itMotherMap->second.second = counter; 161 } 162 } 163 else 164 { 165 candidate->D1 = 1; 166 } 167 168 allParticleOutputArray->Add(candidate); 169 170 if(!pdgParticle) return; 171 172 if(status == 1) 173 { 174 stableParticleOutputArray->Add(candidate); 175 } 176 else if(pdgCode <= 5 || pdgCode == 21 || pdgCode == 15) 177 { 178 partonOutputArray->Add(candidate); 179 } 180 } 181 182 //--------------------------------------------------------------------------- 183 184 void AnalyzeEvent(GenEvent &event, ExRootTreeBranch *branchEvent, DelphesFactory *factory, 185 TObjArray *allParticleOutputArray, TObjArray *stableParticleOutputArray, 186 TObjArray *partonOutputArray, TStopwatch *readStopWatch, TStopwatch *procStopWatch) 187 { 188 Int_t i, counter; 189 map<Int_t, pair<Int_t, Int_t> >::iterator itMotherMap; 190 map<Int_t, pair<Int_t, Int_t> >::iterator itDaughterMap; 191 192 HepMCEvent *element; 193 Candidate *candidate; 194 Double_t momentumCoefficient, positionCoefficient; 195 196 shared_ptr<IntAttribute> processID = event.attribute<IntAttribute>("signal_process_id"); 197 shared_ptr<IntAttribute> mpi = event.attribute<IntAttribute>("mpi"); 198 shared_ptr<DoubleAttribute> scale = event.attribute<DoubleAttribute>("event_scale"); 199 shared_ptr<DoubleAttribute> alphaQED = event.attribute<DoubleAttribute>("alphaQED"); 200 shared_ptr<DoubleAttribute> alphaQCD = event.attribute<DoubleAttribute>("alphaQCD"); 201 202 shared_ptr<GenCrossSection> cs = event.attribute<GenCrossSection>("GenCrossSection"); 203 shared_ptr<GenPdfInfo> pdf = event.attribute<GenPdfInfo>("GenPdfInfo"); 204 205 element = static_cast<HepMCEvent *>(branchEvent->NewEntry()); 206 207 element->Number = event.event_number(); 208 209 element->ProcessID = processID ? processID->value() : 0; 210 element->MPI = mpi ? mpi->value() : 0; 211 element->Weight = event.weights().size() > 0 ? event.weights()[0] : 1.0; 212 element->Scale = scale ? scale->value() : 0.0; 213 element->AlphaQED = alphaQED ? alphaQED->value() : 0.0; 214 element->AlphaQCD = alphaQCD ? alphaQCD->value() : 0.0; 215 216 if(cs) 217 { 218 element->CrossSection = cs->xsec(); 219 element->CrossSectionError = cs->xsec_err(); 220 } 221 else 222 { 223 element->CrossSection = 0.0; 224 element->CrossSectionError = 0.0;; 225 } 226 227 if(pdf) 228 { 229 element->ID1 = pdf->parton_id[0]; 230 element->ID2 = pdf->parton_id[1]; 231 element->X1 = pdf->x[0]; 232 element->X2 = pdf->x[1]; 233 element->ScalePDF = pdf->scale; 234 element->PDF1 = pdf->xf[0]; 235 element->PDF2 = pdf->xf[1]; 236 } 237 else 238 { 239 element->ID1 = 0; 240 element->ID2 = 0; 241 element->X1 = 0.0; 242 element->X2 = 0.0; 243 element->ScalePDF = 0.0; 244 element->PDF1 = 0.0; 245 element->PDF2 = 0.0; 246 } 247 248 element->ReadTime = readStopWatch->RealTime(); 249 element->ProcTime = procStopWatch->RealTime(); 250 251 momentumCoefficient = (event.momentum_unit() == Units::MEV) ? 0.001 : 1.0; 252 positionCoefficient = (event.length_unit() == Units::MM) ? 1.0 : 10.0; 253 254 counter = 0; 255 for(auto vertex: event.vertices()) 256 { 257 for(auto particle: vertex->particles_in()) 258 { 259 if(!particle->production_vertex() || particle->production_vertex()->id() == 0) 260 { 261 AnalyzeParticle(kTRUE, counter, momentumCoefficient, positionCoefficient, vertex, particle, 262 factory, allParticleOutputArray, stableParticleOutputArray, partonOutputArray); 263 ++counter; 264 } 265 } 266 for(auto particle: vertex->particles_out()) 267 { 268 AnalyzeParticle(kFALSE, counter, momentumCoefficient, positionCoefficient, vertex, particle, 269 factory, allParticleOutputArray, stableParticleOutputArray, partonOutputArray); 270 ++counter; 271 } 272 } 273 274 for(i = 0; i < allParticleOutputArray->GetEntriesFast(); ++i) 275 { 276 candidate = static_cast<Candidate *>(allParticleOutputArray->At(i)); 277 278 if(candidate->M1 > 0) 279 { 280 candidate->M1 = -1; 281 candidate->M2 = -1; 282 } 283 else 284 { 285 itMotherMap = gMotherMap.find(candidate->M1); 286 if(itMotherMap == gMotherMap.end()) 287 { 288 candidate->M1 = -1; 289 candidate->M2 = -1; 290 } 291 else 292 { 293 candidate->M1 = itMotherMap->second.first; 294 candidate->M2 = itMotherMap->second.second; 295 } 296 } 297 if(candidate->D1 > 0) 298 { 299 candidate->D1 = -1; 300 candidate->D2 = -1; 301 } 302 else 303 { 304 itDaughterMap = gDaughterMap.find(candidate->D1); 305 if(itDaughterMap == gDaughterMap.end()) 306 { 307 candidate->D1 = -1; 308 candidate->D2 = -1; 309 } 310 else 311 { 312 candidate->D1 = itDaughterMap->second.first; 313 candidate->D2 = itDaughterMap->second.second; 314 } 315 } 316 } 317 } 318 319 //--------------------------------------------------------------------------- 320 321 void AnalyzeWeight(GenEvent &event, ExRootTreeBranch *branchWeight) 322 { 323 Weight *element; 324 325 for(auto weight: event.weights()) 326 { 327 element = static_cast<Weight *>(branchWeight->NewEntry()); 328 329 element->Weight = weight; 330 } 331 } 45 332 46 333 //--------------------------------------------------------------------------- … … 59 346 char appName[] = "DelphesHepMC3"; 60 347 stringstream message; 61 FILE *inputFile = 0; 348 ifstream inputFile; 349 filebuf *inputBuffer; 62 350 TFile *outputFile = 0; 63 351 TStopwatch readStopWatch, procStopWatch; … … 67 355 Delphes *modularDelphes = 0; 68 356 DelphesFactory *factory = 0; 69 TObjArray *stableParticleOutputArray = 0, *allParticleOutputArray = 0, *partonOutputArray = 0; 70 DelphesHepMC3Reader *reader = 0; 357 TObjArray *allParticleOutputArray = 0, *stableParticleOutputArray = 0, *partonOutputArray = 0; 358 ReaderAscii *reader = 0; 359 GenEvent event; 71 360 Int_t i, maxEvents, skipEvents; 72 361 Long64_t length, eventCounter; … … 132 421 partonOutputArray = modularDelphes->ExportArray("partons"); 133 422 134 reader = new DelphesHepMC3Reader; 423 inputBuffer = inputFile.rdbuf(); 424 reader = new ReaderAscii(inputFile); 135 425 136 426 modularDelphes->InitTask(); … … 144 434 { 145 435 cout << "** Reading standard input" << endl; 146 inputFile = stdin;436 inputFile.ios::rdbuf(cin.rdbuf()); 147 437 length = -1; 148 438 } … … 150 440 { 151 441 cout << "** Reading " << argv[i] << endl; 152 inputFile = fopen(argv[i], "r"); 153 154 if(inputFile == NULL) 442 inputFile.ios::rdbuf(inputBuffer); 443 inputFile.open(argv[i]); 444 445 if(inputFile.fail()) 155 446 { 156 447 message << "can't open " << argv[i]; … … 158 449 } 159 450 160 fseek(inputFile, 0L, SEEK_END);161 length = ftello(inputFile);162 fseek(inputFile, 0L, SEEK_SET);451 inputFile.seekg(0, ios::end); 452 length = inputFile.tellg(); 453 inputFile.seekg(0, ios::beg); 163 454 164 455 if(length <= 0) 165 456 { 166 fclose(inputFile); 457 inputFile.close(); 458 inputFile.clear(); 167 459 ++i; 168 460 continue; … … 170 462 } 171 463 172 reader->SetInputFile(inputFile);173 174 464 ExRootProgressBar progressBar(length); 175 465 176 // Loop over all objects 177 eventCounter = 0; 466 reader->skip(skipEvents); 467 progressBar.Update(inputFile.tellg(), skipEvents); 468 469 eventCounter = skipEvents; 470 modularDelphes->Clear(); 178 471 treeWriter->Clear(); 179 modularDelphes->Clear(); 180 reader->Clear(); 472 event.clear(); 473 gMotherMap.clear(); 474 gDaughterMap.clear(); 181 475 readStopWatch.Start(); 182 while((maxEvents <= 0 || eventCounter - skipEvents < maxEvents) && reader->ReadBlock(factory, allParticleOutputArray, stableParticleOutputArray, partonOutputArray) && !interrupted) 183 { 184 if(reader->EventReady()) 185 { 186 ++eventCounter; 187 188 readStopWatch.Stop(); 189 190 if(eventCounter > skipEvents) 191 { 192 procStopWatch.Start(); 193 modularDelphes->ProcessTask(); 194 procStopWatch.Stop(); 195 196 reader->AnalyzeEvent(branchEvent, eventCounter, &readStopWatch, &procStopWatch); 197 reader->AnalyzeWeight(branchWeight); 198 199 treeWriter->Fill(); 200 201 treeWriter->Clear(); 202 } 203 204 modularDelphes->Clear(); 205 reader->Clear(); 206 207 readStopWatch.Start(); 208 } 209 progressBar.Update(ftello(inputFile), eventCounter); 210 } 211 212 fseek(inputFile, 0L, SEEK_END); 213 progressBar.Update(ftello(inputFile), eventCounter, kTRUE); 476 reader->read_event(event); 477 while((maxEvents <= 0 || eventCounter - skipEvents < maxEvents) && !reader->failed() && !interrupted) 478 { 479 readStopWatch.Stop(); 480 481 ++eventCounter; 482 483 procStopWatch.Start(); 484 AnalyzeEvent(event, branchEvent, factory, 485 allParticleOutputArray, stableParticleOutputArray, 486 partonOutputArray, &readStopWatch, &procStopWatch); 487 modularDelphes->ProcessTask(); 488 AnalyzeWeight(event, branchWeight); 489 procStopWatch.Stop(); 490 491 treeWriter->Fill(); 492 493 modularDelphes->Clear(); 494 treeWriter->Clear(); 495 event.clear(); 496 gMotherMap.clear(); 497 gDaughterMap.clear(); 498 499 progressBar.Update(inputFile.tellg(), eventCounter); 500 501 readStopWatch.Start(); 502 reader->read_event(event); 503 } 504 505 progressBar.Update(length, eventCounter, kTRUE); 214 506 progressBar.Finish(); 215 507 216 if( inputFile != stdin) fclose(inputFile);508 if(length > 0) inputFile.close(); 217 509 218 510 ++i;
Note:
See TracChangeset
for help on using the changeset viewer.