#include "hparticlegeantevent.h"
#include "hgeomvector.h"
#include "hcategory.h"
#include "hrecevent.h"
#include "hpartialevent.h"
#include "hgeantheader.h"
#include "hades.h"
#include "hphysicsconstants.h"
#include "hcategorymanager.h"
#include "hparticletool.h"
#include "hgeantkine.h"
#include "hparticlegeant.h"
#include "hparticlegeantdecay.h"
#include <vector>
#include <map>
#include <iostream>
#include <iomanip>
#include <algorithm>
ClassImp(HParticleGeantEvent)
HParticleGeantEvent::HParticleGeantEvent()
{
vParticles .clear();
vParticles .resize(1000);
vDecays .clear();
vDecays .resize(1000);
fBeamEnergy = 0;
fEventPlane = 0;
fImpactParam= 0;
bConvertExtThermal = kTRUE;
bCorrectInfo = kTRUE;
}
HParticleGeantEvent::~HParticleGeantEvent()
{
clear();
}
void HParticleGeantEvent::clear(){
for(UInt_t i = 0 ; i < vexternalKine.size(); i++ ) delete vexternalKine[i];
for(UInt_t i = 0 ; i < vDecays.size(); i++ ) delete vDecays[i];
for(UInt_t i = 0 ; i < vParticles.size(); i++ ) delete vParticles[i];
vexternalKine.clear();
vexternalParticles.clear();
vDecays .clear();
vParticles .clear();
mToDaughters.clear();
mToParticle .clear();
feventVertex.setXYZ(0,0,0);
fBeamEnergy = 0;
fEventPlane = 0;
fImpactParam= 0;
}
void HParticleGeantEvent::nextEvent()
{
clear();
vector<HGeantKine*> mothers;
vector<HGeantKine*> daughters;
HCategory* kineCat = HCategoryManager::getCategory(catGeantKine,0,"catGeantKine");
if(!kineCat) return;
HPartialEvent* simul =((HRecEvent*) gHades->getCurrentEvent())->getPartialEvent(catSimul);
if(simul) {
HGeantHeader* header = (HGeantHeader*) simul->getSubHeader();
if(header){
fBeamEnergy = header->getBeamEnergy();
fEventPlane = header->getEventPlane();
fImpactParam = header->getImpactParameter();
}
} else cout<<"no catSimul"<<endl;
Int_t n = kineCat->getEntries();
HGeantKine* kine=0;
Bool_t vertexFound = kFALSE;
for(Int_t j = 0 ;j < n ; j ++){
kine = HCategoryManager::getObject(kine,kineCat,j);
if(kine){
if(!vertexFound && kine->getParentTrack() == 0){
kine->getVertex(feventVertex);
vertexFound = kTRUE;
}
if(bCorrectInfo && kine->isBugInfo()) {
kine->setGenerator(0,0,0);
}
UInt_t gen = HGeantKine::getMothers(kine,mothers);
UInt_t ndaughters = HGeantKine::getDaughters(kine,daughters);
if(ndaughters > 0){
mToDaughters[kine] = daughters;
}
if(kine->isExternalSource() && kine->getParentTrack() == 0){
vexternalParticles.push_back(kine);
}
HParticleGeant* p = new HParticleGeant();
p->setGeneration(gen);
p->setParticle(kine);
if(mothers.size() > 0) p->setMother(mothers[0]);
vParticles.push_back(p);
mToParticle[kine->getTrack()] = p;
}
}
map<Long64_t,vector<HGeantKine*> > mexternalSource;
for(UInt_t j=0; j < vexternalParticles.size(); j++){
HGeantKine* daughter = vexternalParticles[j];
if(daughter->getGeneratorInfo() == daughter->getGeneratorInfo1() ) continue;
Long64_t index = daughter->getGeneratorInfo2() + kMaxInt + kMaxInt*daughter->getGeneratorInfo2();
if(mexternalSource.find(index) == mexternalSource.end()) {
vector<HGeantKine*> daughters;
daughters.push_back(daughter);
mexternalSource[index] = daughters;
} else {
mexternalSource[index].push_back(daughter);
}
}
for(map <Long64_t,vector<HGeantKine*> >::iterator itex = mexternalSource.begin(); itex != mexternalSource.end(); ++itex){
vector<HGeantKine*>& daughters = itex->second;
HParticleGeantDecay* decay = new HParticleGeantDecay() ;
TLorentzVector v1,v2;
for(UInt_t j = 0; j <daughters.size(); j++){
HParticleTool::getTLorentzVector(daughters[j],v1);
v2 += v1;
}
Int_t sourceID = daughters[0]->getGeneratorInfo();
Bool_t isThermal = daughters[0]->isThermalSource();
HGeantKine* kine = new HGeantKine();
if(isThermal && bConvertExtThermal) kine->setID(sourceID-500);
else kine->setID(sourceID);
kine->setGenerator(daughters[0]->getGeneratorInfo(),daughters[0]->getGeneratorInfo1(),daughters[0]->getGeneratorInfo2());
kine->setMomentum(v2.Px(),v2.Py(),v2.Pz());
kine->setVertex(feventVertex.X(),feventVertex.Y(),feventVertex.Z());
kine->setMechanism(5);
kine->setMedium(-1);
vexternalKine.push_back(kine);
decay->setMother(kine);
decay->setDecayVertex(feventVertex.X(),feventVertex.Y(),feventVertex.Z());
decay->setGeneration(-1);
decay->setDaughters (daughters);
decay->sortDaughters();
vDecays.push_back(decay);
}
for(map <HGeantKine*,vector<HGeantKine*> >::iterator it = mToDaughters.begin(); it != mToDaughters.end(); ++it){
HGeantKine* mother = it->first;
vector<HGeantKine*>& daughters = it->second;
Float_t x,y,z;
Int_t aPar,aMed,aMech;
mother->getVertex(x,y,z);
mother->getCreator(aPar,aMed,aMech);
UInt_t gen = HGeantKine::getGeneration(mother);
HParticleGeantDecay* decay = new HParticleGeantDecay();
decay->setMother(mother);
decay->setDecayVertex(x,y,z);
decay->setGeneration(gen) ;
decay->setDaughters(daughters);
decay->sortDaughters();
vDecays.push_back(decay);
}
for(UInt_t i = 0; i < vexternalParticles.size(); i++){
HGeantKine* part = vexternalParticles[i];
if(part->getParentTrack() == 0 && part->isExternalSource() &&
part->getGeneratorInfo() == part->getGeneratorInfo1() )
{
HParticleGeantDecay* d = isMotherOfDecay(part);
if(d == 0){
HGeomVector vert;
part->getVertex(vert);
HParticleGeantDecay* decay = new HParticleGeantDecay();
decay->setMother(part);
decay->setDecayVertex(vert);
decay->setGeneration(0);
vDecays.push_back(decay);
}
}
}
if(vDecays.size() > 0){
for(UInt_t i=vDecays.size()-1; i > 0; i--){
HGeantKine* daughter = vDecays[i]->getMother();
if(daughter){
HParticleGeantDecay* dmother = isDaughterOfDecay(daughter);
if(dmother) vDecays[i]->setMotherDecay(dmother);
}
}
}
for(UInt_t i = 0; i < vParticles.size(); i ++){
HParticleGeantDecay* decay = isDaughterOfDecay(vParticles[i]->getParticle());
if(decay) vParticles[i]->setMotherDecay(decay);
}
HCategory* candCat = HCategoryManager::getCategory(catParticleCand,2,"catParticleCand");
if(candCat){
n = candCat->getEntries();
HParticleCandSim* cand = 0 ;
for(Int_t i = 0; i < n ;i ++){
cand = HCategoryManager::getObject(cand,candCat,i);
if(cand){
Int_t tr = cand->getGeantTrack();
if(tr > 0){
map<Int_t,HParticleGeant*>::iterator it = mToParticle.find(tr);
if(it != mToParticle.end()) {
HParticleGeant* gP = it->second;
gP->addRecoCand(cand);
}
}
}
}
}
}
HParticleGeantDecay* HParticleGeantEvent::isDaughterOfDecay(HGeantKine* daughter)
{
if(!daughter) return NULL;
for(UInt_t i=0; i < vDecays.size(); i++){
if(vDecays[i]->isDaughter(daughter)) return vDecays[i];
}
return NULL;
}
HParticleGeantDecay* HParticleGeantEvent::isDaughterOfDecay(Int_t track)
{
HGeantKine* moth = getKine(track);
return isDaughterOfDecay(moth);
}
HParticleGeantDecay* HParticleGeantEvent::isMotherOfDecay(HGeantKine* moth)
{
if(!moth) return NULL;
for(UInt_t i=0; i < vDecays.size(); i++){
if(vDecays[i]->getMother() && vDecays[i]->getMother() == moth) return vDecays[i];
}
return NULL;
}
HParticleGeantDecay* HParticleGeantEvent::isMotherOfDecay(Int_t track)
{
HGeantKine* moth = getKine(track);
return isMotherOfDecay(moth);
}
Int_t HParticleGeantEvent::isDecay(vector<HParticleGeantDecay*>& decays,
Int_t motherid,Int_t generation,Int_t med,Float_t dist)
{
decays.clear();
Float_t di = TMath::Abs(dist);
for(UInt_t i=0; i < vDecays.size(); i++){
Float_t d=0;
if(dist!=0) d = vDecays[i]->getDistFromVertex(&feventVertex);
if(( (motherid < 0 ) || ( vDecays[i]->getMother() && vDecays[i]->getMother()->getID() == motherid ) ) &&
( (generation< -1) || ( vDecays[i]->getGeneration() == generation ) ) &&
( (med < 0 ) || ( vDecays[i]->getMother() && vDecays[i]->getMother()->getMedium() == med ) ) &&
( (dist == 0 ) || ( ( dist > 0 ? d < di : d > di) ) )
)
{
decays.push_back(vDecays[i]);
}
}
return decays.size();
}
Int_t HParticleGeantEvent::isParticle(vector<HGeantKine*>& particles,
Int_t id,Int_t motherid, Int_t generation,
Int_t med,Float_t dist)
{
particles.clear();
Float_t di = TMath::Abs(dist);
for(UInt_t i=0; i < vParticles.size(); i++){
HParticleGeant* p = vParticles[i];
HParticleGeantDecay* decay = p->getMotherDecay();
HGeantKine* mother = 0;
if(decay) mother = decay->getMother();
Float_t d=0;
if(dist!=0) d = p->getDistFromVertex(&feventVertex);
if(( (id < 0 ) || ( p->getParticle()->getID() == id ) ) &&
( (generation< 0 )|| ( p->getGeneration() == generation ) ) &&
( (motherid < 0 ) || ( decay && mother && mother->getID() == motherid ) ) &&
( (med < 0 ) || ( p->getParticle()->getMedium() == med ) ) &&
( (dist == 0 ) || ( ( dist > 0 ? d < di : d > di) ) )
)
{
particles.push_back(p->getParticle());
}
}
return particles.size();
}
Int_t HParticleGeantEvent::isParticle(vector<HParticleGeant*>& particles,
Int_t id,Int_t motherid, Int_t generation,
Int_t med ,Float_t dist)
{
particles.clear();
Float_t di = TMath::Abs(dist);
for(UInt_t i=0; i < vParticles.size(); i++){
HParticleGeant* p = vParticles[i];
HParticleGeantDecay* decay = p->getMotherDecay();
HGeantKine* mother = 0;
if(decay) mother = decay->getMother();
Float_t d=0;
if(dist!=0) d = p->getDistFromVertex(&feventVertex);
if(( (id < 0 ) || ( p->getParticle()->getID() == id ) ) &&
( (generation< 0 )|| ( p->getGeneration() == generation ) ) &&
( (motherid < 0 ) || ( decay && mother && mother->getID() == motherid ) ) &&
( (med < 0 ) || ( p->getParticle()->getMedium() == med ) ) &&
( (dist == 0 ) || ( ( dist > 0 ? d < di : d > di) ) )
)
{
particles.push_back(p);
}
}
return particles.size();
}
HParticleGeant* HParticleGeantEvent::getParticle(Int_t track)
{
map<Int_t,HParticleGeant*>::iterator it = mToParticle.find(track);
if(it != mToParticle.end()) return it->second;
else return 0;
}
HParticleGeant* HParticleGeantEvent::getParticle(HGeantKine* kine)
{
if(!kine) return 0;
return getParticle(kine->getTrack());
}
HGeantKine* HParticleGeantEvent::getKine(Int_t track)
{
HParticleGeant* p = getParticle(track);
if(p) return p->getParticle();
else return 0;
}
UInt_t HParticleGeantEvent::getMultiplicity(Int_t id,Int_t generation,Int_t charge,UInt_t type,UInt_t detbits)
{
UInt_t mult = 0;
for(UInt_t i=0; i < vParticles.size(); i++){
HParticleGeant* p = vParticles[i];
Bool_t acc = p->isInAcceptance();
Bool_t reco = (p->getNTrueReco(kTRUE,detbits) > 0) ? kTRUE : kFALSE;
Int_t chrg = HPhysicsConstants::charge(p->getParticle()->getID());
if(( (id < 0 ) || ( p->getParticle()->getID() == id ) ) &&
( (generation < 0 ) || ( p->getGeneration() == generation ) ) &&
( (type == 0 ) || (type == 1 && acc) || (type == 2 && reco) ) &&
( (charge ==-2 ) || (charge == 0 && chrg!=0) || (charge == 1 && chrg > 0) || (charge ==-1 && chrg < 0) )
)
{
mult++;
}
}
return mult;
}
hparticlegeantevent.cc:10 hparticlegeantevent.cc:11 hparticlegeantevent.cc:12 hparticlegeantevent.cc:13 hparticlegeantevent.cc:14 hparticlegeantevent.cc:15 hparticlegeantevent.cc:16 hparticlegeantevent.cc:17 hparticlegeantevent.cc:18 hparticlegeantevent.cc:19 hparticlegeantevent.cc:20 hparticlegeantevent.cc:21 hparticlegeantevent.cc:22 hparticlegeantevent.cc:23 hparticlegeantevent.cc:24 hparticlegeantevent.cc:25 hparticlegeantevent.cc:26 hparticlegeantevent.cc:27 hparticlegeantevent.cc:28 hparticlegeantevent.cc:29 hparticlegeantevent.cc:30 hparticlegeantevent.cc:31 hparticlegeantevent.cc:32 hparticlegeantevent.cc:33 hparticlegeantevent.cc:34 hparticlegeantevent.cc:35 hparticlegeantevent.cc:36 hparticlegeantevent.cc:37 hparticlegeantevent.cc:38 hparticlegeantevent.cc:39 hparticlegeantevent.cc:40 hparticlegeantevent.cc:41 hparticlegeantevent.cc:42 hparticlegeantevent.cc:43 hparticlegeantevent.cc:44 hparticlegeantevent.cc:45 hparticlegeantevent.cc:46 hparticlegeantevent.cc:47 hparticlegeantevent.cc:48 hparticlegeantevent.cc:49 hparticlegeantevent.cc:50 hparticlegeantevent.cc:51 hparticlegeantevent.cc:52 hparticlegeantevent.cc:53 hparticlegeantevent.cc:54 hparticlegeantevent.cc:55 hparticlegeantevent.cc:56 hparticlegeantevent.cc:57 hparticlegeantevent.cc:58 hparticlegeantevent.cc:59 hparticlegeantevent.cc:60 hparticlegeantevent.cc:61 hparticlegeantevent.cc:62 hparticlegeantevent.cc:63 hparticlegeantevent.cc:64 hparticlegeantevent.cc:65 hparticlegeantevent.cc:66 hparticlegeantevent.cc:67 hparticlegeantevent.cc:68 hparticlegeantevent.cc:69 hparticlegeantevent.cc:70 hparticlegeantevent.cc:71 hparticlegeantevent.cc:72 hparticlegeantevent.cc:73 hparticlegeantevent.cc:74 hparticlegeantevent.cc:75 hparticlegeantevent.cc:76 hparticlegeantevent.cc:77 hparticlegeantevent.cc:78 hparticlegeantevent.cc:79 hparticlegeantevent.cc:80 hparticlegeantevent.cc:81 hparticlegeantevent.cc:82 hparticlegeantevent.cc:83 hparticlegeantevent.cc:84 hparticlegeantevent.cc:85 hparticlegeantevent.cc:86 hparticlegeantevent.cc:87 hparticlegeantevent.cc:88 hparticlegeantevent.cc:89 hparticlegeantevent.cc:90 hparticlegeantevent.cc:91 hparticlegeantevent.cc:92 hparticlegeantevent.cc:93 hparticlegeantevent.cc:94 hparticlegeantevent.cc:95 hparticlegeantevent.cc:96 hparticlegeantevent.cc:97 hparticlegeantevent.cc:98 hparticlegeantevent.cc:99 hparticlegeantevent.cc:100 hparticlegeantevent.cc:101 hparticlegeantevent.cc:102 hparticlegeantevent.cc:103 hparticlegeantevent.cc:104 hparticlegeantevent.cc:105 hparticlegeantevent.cc:106 hparticlegeantevent.cc:107 hparticlegeantevent.cc:108 hparticlegeantevent.cc:109 hparticlegeantevent.cc:110 hparticlegeantevent.cc:111 hparticlegeantevent.cc:112 hparticlegeantevent.cc:113 hparticlegeantevent.cc:114 hparticlegeantevent.cc:115 hparticlegeantevent.cc:116 hparticlegeantevent.cc:117 hparticlegeantevent.cc:118 hparticlegeantevent.cc:119 hparticlegeantevent.cc:120 hparticlegeantevent.cc:121 hparticlegeantevent.cc:122 hparticlegeantevent.cc:123 hparticlegeantevent.cc:124 hparticlegeantevent.cc:125 hparticlegeantevent.cc:126 hparticlegeantevent.cc:127 hparticlegeantevent.cc:128 hparticlegeantevent.cc:129 hparticlegeantevent.cc:130 hparticlegeantevent.cc:131 hparticlegeantevent.cc:132 hparticlegeantevent.cc:133 hparticlegeantevent.cc:134 hparticlegeantevent.cc:135 hparticlegeantevent.cc:136 hparticlegeantevent.cc:137 hparticlegeantevent.cc:138 hparticlegeantevent.cc:139 hparticlegeantevent.cc:140 hparticlegeantevent.cc:141 hparticlegeantevent.cc:142 hparticlegeantevent.cc:143 hparticlegeantevent.cc:144 hparticlegeantevent.cc:145 hparticlegeantevent.cc:146 hparticlegeantevent.cc:147 hparticlegeantevent.cc:148 hparticlegeantevent.cc:149 hparticlegeantevent.cc:150 hparticlegeantevent.cc:151 hparticlegeantevent.cc:152 hparticlegeantevent.cc:153 hparticlegeantevent.cc:154 hparticlegeantevent.cc:155 hparticlegeantevent.cc:156 hparticlegeantevent.cc:157 hparticlegeantevent.cc:158 hparticlegeantevent.cc:159 hparticlegeantevent.cc:160 hparticlegeantevent.cc:161 hparticlegeantevent.cc:162 hparticlegeantevent.cc:163 hparticlegeantevent.cc:164 hparticlegeantevent.cc:165 hparticlegeantevent.cc:166 hparticlegeantevent.cc:167 hparticlegeantevent.cc:168 hparticlegeantevent.cc:169 hparticlegeantevent.cc:170 hparticlegeantevent.cc:171 hparticlegeantevent.cc:172 hparticlegeantevent.cc:173 hparticlegeantevent.cc:174 hparticlegeantevent.cc:175 hparticlegeantevent.cc:176 hparticlegeantevent.cc:177 hparticlegeantevent.cc:178 hparticlegeantevent.cc:179 hparticlegeantevent.cc:180 hparticlegeantevent.cc:181 hparticlegeantevent.cc:182 hparticlegeantevent.cc:183 hparticlegeantevent.cc:184 hparticlegeantevent.cc:185 hparticlegeantevent.cc:186 hparticlegeantevent.cc:187 hparticlegeantevent.cc:188 hparticlegeantevent.cc:189 hparticlegeantevent.cc:190 hparticlegeantevent.cc:191 hparticlegeantevent.cc:192 hparticlegeantevent.cc:193 hparticlegeantevent.cc:194 hparticlegeantevent.cc:195 hparticlegeantevent.cc:196 hparticlegeantevent.cc:197 hparticlegeantevent.cc:198 hparticlegeantevent.cc:199 hparticlegeantevent.cc:200 hparticlegeantevent.cc:201 hparticlegeantevent.cc:202 hparticlegeantevent.cc:203 hparticlegeantevent.cc:204 hparticlegeantevent.cc:205 hparticlegeantevent.cc:206 hparticlegeantevent.cc:207 hparticlegeantevent.cc:208 hparticlegeantevent.cc:209 hparticlegeantevent.cc:210 hparticlegeantevent.cc:211 hparticlegeantevent.cc:212 hparticlegeantevent.cc:213 hparticlegeantevent.cc:214 hparticlegeantevent.cc:215 hparticlegeantevent.cc:216 hparticlegeantevent.cc:217 hparticlegeantevent.cc:218 hparticlegeantevent.cc:219 hparticlegeantevent.cc:220 hparticlegeantevent.cc:221 hparticlegeantevent.cc:222 hparticlegeantevent.cc:223 hparticlegeantevent.cc:224 hparticlegeantevent.cc:225 hparticlegeantevent.cc:226 hparticlegeantevent.cc:227 hparticlegeantevent.cc:228 hparticlegeantevent.cc:229 hparticlegeantevent.cc:230 hparticlegeantevent.cc:231 hparticlegeantevent.cc:232 hparticlegeantevent.cc:233 hparticlegeantevent.cc:234 hparticlegeantevent.cc:235 hparticlegeantevent.cc:236 hparticlegeantevent.cc:237 hparticlegeantevent.cc:238 hparticlegeantevent.cc:239 hparticlegeantevent.cc:240 hparticlegeantevent.cc:241 hparticlegeantevent.cc:242 hparticlegeantevent.cc:243 hparticlegeantevent.cc:244 hparticlegeantevent.cc:245 hparticlegeantevent.cc:246 hparticlegeantevent.cc:247 hparticlegeantevent.cc:248 hparticlegeantevent.cc:249 hparticlegeantevent.cc:250 hparticlegeantevent.cc:251 hparticlegeantevent.cc:252 hparticlegeantevent.cc:253 hparticlegeantevent.cc:254 hparticlegeantevent.cc:255 hparticlegeantevent.cc:256 hparticlegeantevent.cc:257 hparticlegeantevent.cc:258 hparticlegeantevent.cc:259 hparticlegeantevent.cc:260 hparticlegeantevent.cc:261 hparticlegeantevent.cc:262 hparticlegeantevent.cc:263 hparticlegeantevent.cc:264 hparticlegeantevent.cc:265 hparticlegeantevent.cc:266 hparticlegeantevent.cc:267 hparticlegeantevent.cc:268 hparticlegeantevent.cc:269 hparticlegeantevent.cc:270 hparticlegeantevent.cc:271 hparticlegeantevent.cc:272 hparticlegeantevent.cc:273 hparticlegeantevent.cc:274 hparticlegeantevent.cc:275 hparticlegeantevent.cc:276 hparticlegeantevent.cc:277 hparticlegeantevent.cc:278 hparticlegeantevent.cc:279 hparticlegeantevent.cc:280 hparticlegeantevent.cc:281 hparticlegeantevent.cc:282 hparticlegeantevent.cc:283 hparticlegeantevent.cc:284 hparticlegeantevent.cc:285 hparticlegeantevent.cc:286 hparticlegeantevent.cc:287 hparticlegeantevent.cc:288 hparticlegeantevent.cc:289 hparticlegeantevent.cc:290 hparticlegeantevent.cc:291 hparticlegeantevent.cc:292 hparticlegeantevent.cc:293 hparticlegeantevent.cc:294 hparticlegeantevent.cc:295 hparticlegeantevent.cc:296 hparticlegeantevent.cc:297 hparticlegeantevent.cc:298 hparticlegeantevent.cc:299 hparticlegeantevent.cc:300 hparticlegeantevent.cc:301 hparticlegeantevent.cc:302 hparticlegeantevent.cc:303 hparticlegeantevent.cc:304 hparticlegeantevent.cc:305 hparticlegeantevent.cc:306 hparticlegeantevent.cc:307 hparticlegeantevent.cc:308 hparticlegeantevent.cc:309 hparticlegeantevent.cc:310 hparticlegeantevent.cc:311 hparticlegeantevent.cc:312 hparticlegeantevent.cc:313 hparticlegeantevent.cc:314 hparticlegeantevent.cc:315 hparticlegeantevent.cc:316 hparticlegeantevent.cc:317 hparticlegeantevent.cc:318 hparticlegeantevent.cc:319 hparticlegeantevent.cc:320 hparticlegeantevent.cc:321 hparticlegeantevent.cc:322 hparticlegeantevent.cc:323 hparticlegeantevent.cc:324 hparticlegeantevent.cc:325 hparticlegeantevent.cc:326 hparticlegeantevent.cc:327 hparticlegeantevent.cc:328 hparticlegeantevent.cc:329 hparticlegeantevent.cc:330 hparticlegeantevent.cc:331 hparticlegeantevent.cc:332 hparticlegeantevent.cc:333 hparticlegeantevent.cc:334 hparticlegeantevent.cc:335 hparticlegeantevent.cc:336 hparticlegeantevent.cc:337 hparticlegeantevent.cc:338 hparticlegeantevent.cc:339 hparticlegeantevent.cc:340 hparticlegeantevent.cc:341 hparticlegeantevent.cc:342 hparticlegeantevent.cc:343 hparticlegeantevent.cc:344 hparticlegeantevent.cc:345 hparticlegeantevent.cc:346 hparticlegeantevent.cc:347 hparticlegeantevent.cc:348 hparticlegeantevent.cc:349 hparticlegeantevent.cc:350 hparticlegeantevent.cc:351 hparticlegeantevent.cc:352 hparticlegeantevent.cc:353 hparticlegeantevent.cc:354 hparticlegeantevent.cc:355 hparticlegeantevent.cc:356 hparticlegeantevent.cc:357 hparticlegeantevent.cc:358 hparticlegeantevent.cc:359 hparticlegeantevent.cc:360 hparticlegeantevent.cc:361 hparticlegeantevent.cc:362 hparticlegeantevent.cc:363 hparticlegeantevent.cc:364 hparticlegeantevent.cc:365 hparticlegeantevent.cc:366 hparticlegeantevent.cc:367 hparticlegeantevent.cc:368 hparticlegeantevent.cc:369 hparticlegeantevent.cc:370 hparticlegeantevent.cc:371 hparticlegeantevent.cc:372 hparticlegeantevent.cc:373 hparticlegeantevent.cc:374 hparticlegeantevent.cc:375 hparticlegeantevent.cc:376 hparticlegeantevent.cc:377 hparticlegeantevent.cc:378 hparticlegeantevent.cc:379 hparticlegeantevent.cc:380 hparticlegeantevent.cc:381 hparticlegeantevent.cc:382 hparticlegeantevent.cc:383 hparticlegeantevent.cc:384 hparticlegeantevent.cc:385 hparticlegeantevent.cc:386 hparticlegeantevent.cc:387 hparticlegeantevent.cc:388 hparticlegeantevent.cc:389 hparticlegeantevent.cc:390 hparticlegeantevent.cc:391 hparticlegeantevent.cc:392 hparticlegeantevent.cc:393 hparticlegeantevent.cc:394 hparticlegeantevent.cc:395 hparticlegeantevent.cc:396 hparticlegeantevent.cc:397 hparticlegeantevent.cc:398 hparticlegeantevent.cc:399 hparticlegeantevent.cc:400 hparticlegeantevent.cc:401 hparticlegeantevent.cc:402 hparticlegeantevent.cc:403 hparticlegeantevent.cc:404 hparticlegeantevent.cc:405 hparticlegeantevent.cc:406 hparticlegeantevent.cc:407 hparticlegeantevent.cc:408 hparticlegeantevent.cc:409 hparticlegeantevent.cc:410 hparticlegeantevent.cc:411 hparticlegeantevent.cc:412 hparticlegeantevent.cc:413 hparticlegeantevent.cc:414 hparticlegeantevent.cc:415 hparticlegeantevent.cc:416 hparticlegeantevent.cc:417 hparticlegeantevent.cc:418 hparticlegeantevent.cc:419 hparticlegeantevent.cc:420 hparticlegeantevent.cc:421 hparticlegeantevent.cc:422 hparticlegeantevent.cc:423 hparticlegeantevent.cc:424 hparticlegeantevent.cc:425 hparticlegeantevent.cc:426 hparticlegeantevent.cc:427 hparticlegeantevent.cc:428 hparticlegeantevent.cc:429 hparticlegeantevent.cc:430 hparticlegeantevent.cc:431 hparticlegeantevent.cc:432 hparticlegeantevent.cc:433 hparticlegeantevent.cc:434 hparticlegeantevent.cc:435 hparticlegeantevent.cc:436 hparticlegeantevent.cc:437 hparticlegeantevent.cc:438 hparticlegeantevent.cc:439 hparticlegeantevent.cc:440 hparticlegeantevent.cc:441 hparticlegeantevent.cc:442 hparticlegeantevent.cc:443 hparticlegeantevent.cc:444 hparticlegeantevent.cc:445 hparticlegeantevent.cc:446 hparticlegeantevent.cc:447 hparticlegeantevent.cc:448 hparticlegeantevent.cc:449 hparticlegeantevent.cc:450 hparticlegeantevent.cc:451 hparticlegeantevent.cc:452 hparticlegeantevent.cc:453 hparticlegeantevent.cc:454 hparticlegeantevent.cc:455 hparticlegeantevent.cc:456 hparticlegeantevent.cc:457 hparticlegeantevent.cc:458 hparticlegeantevent.cc:459 hparticlegeantevent.cc:460 hparticlegeantevent.cc:461 hparticlegeantevent.cc:462 hparticlegeantevent.cc:463 hparticlegeantevent.cc:464 hparticlegeantevent.cc:465 hparticlegeantevent.cc:466 hparticlegeantevent.cc:467 hparticlegeantevent.cc:468 hparticlegeantevent.cc:469 hparticlegeantevent.cc:470 hparticlegeantevent.cc:471 hparticlegeantevent.cc:472 hparticlegeantevent.cc:473 hparticlegeantevent.cc:474 hparticlegeantevent.cc:475 hparticlegeantevent.cc:476 hparticlegeantevent.cc:477 hparticlegeantevent.cc:478 hparticlegeantevent.cc:479 hparticlegeantevent.cc:480 hparticlegeantevent.cc:481 hparticlegeantevent.cc:482 hparticlegeantevent.cc:483 hparticlegeantevent.cc:484 hparticlegeantevent.cc:485 hparticlegeantevent.cc:486 hparticlegeantevent.cc:487 hparticlegeantevent.cc:488 hparticlegeantevent.cc:489 hparticlegeantevent.cc:490 hparticlegeantevent.cc:491 hparticlegeantevent.cc:492 hparticlegeantevent.cc:493 hparticlegeantevent.cc:494 hparticlegeantevent.cc:495 hparticlegeantevent.cc:496 hparticlegeantevent.cc:497 hparticlegeantevent.cc:498 hparticlegeantevent.cc:499 hparticlegeantevent.cc:500 hparticlegeantevent.cc:501 hparticlegeantevent.cc:502 hparticlegeantevent.cc:503 hparticlegeantevent.cc:504 hparticlegeantevent.cc:505 hparticlegeantevent.cc:506 hparticlegeantevent.cc:507 hparticlegeantevent.cc:508 hparticlegeantevent.cc:509 hparticlegeantevent.cc:510 hparticlegeantevent.cc:511 hparticlegeantevent.cc:512 hparticlegeantevent.cc:513 hparticlegeantevent.cc:514 hparticlegeantevent.cc:515 hparticlegeantevent.cc:516 hparticlegeantevent.cc:517 hparticlegeantevent.cc:518 hparticlegeantevent.cc:519 hparticlegeantevent.cc:520 hparticlegeantevent.cc:521 hparticlegeantevent.cc:522 hparticlegeantevent.cc:523 hparticlegeantevent.cc:524 hparticlegeantevent.cc:525 hparticlegeantevent.cc:526 hparticlegeantevent.cc:527 hparticlegeantevent.cc:528 hparticlegeantevent.cc:529 hparticlegeantevent.cc:530 hparticlegeantevent.cc:531 hparticlegeantevent.cc:532 hparticlegeantevent.cc:533 hparticlegeantevent.cc:534 hparticlegeantevent.cc:535 hparticlegeantevent.cc:536 hparticlegeantevent.cc:537 hparticlegeantevent.cc:538 hparticlegeantevent.cc:539 hparticlegeantevent.cc:540 hparticlegeantevent.cc:541 hparticlegeantevent.cc:542 hparticlegeantevent.cc:543 hparticlegeantevent.cc:544 hparticlegeantevent.cc:545 hparticlegeantevent.cc:546 hparticlegeantevent.cc:547 hparticlegeantevent.cc:548 hparticlegeantevent.cc:549 hparticlegeantevent.cc:550 hparticlegeantevent.cc:551 hparticlegeantevent.cc:552 hparticlegeantevent.cc:553 hparticlegeantevent.cc:554 hparticlegeantevent.cc:555 hparticlegeantevent.cc:556 hparticlegeantevent.cc:557 hparticlegeantevent.cc:558 hparticlegeantevent.cc:559 hparticlegeantevent.cc:560 hparticlegeantevent.cc:561 hparticlegeantevent.cc:562 hparticlegeantevent.cc:563 hparticlegeantevent.cc:564 hparticlegeantevent.cc:565 hparticlegeantevent.cc:566 hparticlegeantevent.cc:567 hparticlegeantevent.cc:568 hparticlegeantevent.cc:569 hparticlegeantevent.cc:570 hparticlegeantevent.cc:571 hparticlegeantevent.cc:572 hparticlegeantevent.cc:573 hparticlegeantevent.cc:574 hparticlegeantevent.cc:575 hparticlegeantevent.cc:576 hparticlegeantevent.cc:577 hparticlegeantevent.cc:578 hparticlegeantevent.cc:579 hparticlegeantevent.cc:580 hparticlegeantevent.cc:581 hparticlegeantevent.cc:582 hparticlegeantevent.cc:583 hparticlegeantevent.cc:584 hparticlegeantevent.cc:585 hparticlegeantevent.cc:586 hparticlegeantevent.cc:587 hparticlegeantevent.cc:588 hparticlegeantevent.cc:589 hparticlegeantevent.cc:590 hparticlegeantevent.cc:591 hparticlegeantevent.cc:592 hparticlegeantevent.cc:593 hparticlegeantevent.cc:594 hparticlegeantevent.cc:595 hparticlegeantevent.cc:596 hparticlegeantevent.cc:597 hparticlegeantevent.cc:598 hparticlegeantevent.cc:599 hparticlegeantevent.cc:600 hparticlegeantevent.cc:601 hparticlegeantevent.cc:602 hparticlegeantevent.cc:603 hparticlegeantevent.cc:604 hparticlegeantevent.cc:605 hparticlegeantevent.cc:606 hparticlegeantevent.cc:607 hparticlegeantevent.cc:608 hparticlegeantevent.cc:609 hparticlegeantevent.cc:610 hparticlegeantevent.cc:611 hparticlegeantevent.cc:612 hparticlegeantevent.cc:613 hparticlegeantevent.cc:614 hparticlegeantevent.cc:615 hparticlegeantevent.cc:616 hparticlegeantevent.cc:617 hparticlegeantevent.cc:618 hparticlegeantevent.cc:619 hparticlegeantevent.cc:620 hparticlegeantevent.cc:621 hparticlegeantevent.cc:622 hparticlegeantevent.cc:623 hparticlegeantevent.cc:624 hparticlegeantevent.cc:625 hparticlegeantevent.cc:626 hparticlegeantevent.cc:627 hparticlegeantevent.cc:628 hparticlegeantevent.cc:629 hparticlegeantevent.cc:630 hparticlegeantevent.cc:631 hparticlegeantevent.cc:632 hparticlegeantevent.cc:633 hparticlegeantevent.cc:634 hparticlegeantevent.cc:635 hparticlegeantevent.cc:636 hparticlegeantevent.cc:637 hparticlegeantevent.cc:638 hparticlegeantevent.cc:639 hparticlegeantevent.cc:640 hparticlegeantevent.cc:641 hparticlegeantevent.cc:642 hparticlegeantevent.cc:643 hparticlegeantevent.cc:644