#include "hades.h"
#include "hcategory.h"
#include "hevent.h"
#include "hruntimedb.h"
#include "hspectrometer.h"
#include "hstart2cal.h"
#include "hstart2hit.h"
#include "htofhit.h"
#include "htofcluster.h"
#include "hrpchit.h"
#include "hrpccluster.h"
#include "htofhitsim.h"
#include "htofclustersim.h"
#include "hrpchitsim.h"
#include "hrpcclustersim.h"
#include "hparticlestart2hitf.h"
#include "tofdef.h"
#include "rpcdef.h"
#include "hstartdef.h"
#include "TMath.h"
#include <iomanip>
#include <iostream>
ClassImp(HParticleStart2HitF)
HParticleStart2HitF::HParticleStart2HitF(void)
: HReconstructor()
{
fCatTof = NULL;
fCatTofClu = NULL;
fCatRpc = NULL;
fCatRpcClu = NULL;
fCatStartCal = NULL;
fCatStartHit = NULL;
bDebug = kFALSE;
startTimeOriginal = 0.;
startFlag =-1;
setTimeCut(15.);
}
HParticleStart2HitF::HParticleStart2HitF(const Text_t *name, const Text_t *title, Bool_t skip)
: HReconstructor(name, title)
{
fCatTof = NULL;
fCatTofClu = NULL;
fCatRpc = NULL;
fCatRpcClu = NULL;
fCatStartCal = NULL;
fCatStartHit = NULL;
bDebug = kFALSE;
startTimeOriginal = 0.;
startFlag =-1;
setTimeCut(5.,15.);
}
Bool_t HParticleStart2HitF::init(void)
{
fCatTof = gHades->getCurrentEvent()->getCategory(catTofHit);
if (NULL == fCatTof) {
Warning("init", "HTofHit category not available!");
}
fCatTofClu = gHades->getCurrentEvent()->getCategory(catTofCluster);
if (NULL == fCatTofClu) {
Warning("init", "HTofCluster category not available!");
}
fCatRpc = gHades->getCurrentEvent()->getCategory(catRpcHit);
if (NULL == fCatRpc) {
Warning("init", "HRpcHit category not available!");
}
fCatRpcClu = gHades->getCurrentEvent()->getCategory(catRpcCluster);
if (NULL == fCatRpcClu) {
Warning("init", "HRpcCluster category not available!");
}
fCatStartCal = gHades->getCurrentEvent()->getCategory(catStart2Cal);
if (NULL == fCatStartCal) {
Warning("init", "HStart2Cal category not available!");
}
fCatStartHit = gHades->getCurrentEvent()->getCategory(catStart2Hit);
if (NULL == fCatStartHit) {
Warning("init", "HStart2Hit category not available!");
}
if (bDebug)
{
out = new TFile("./start_output.root","RECREATE");
nt1 = new TNtuple("nt1","nt1","evt:sys:tof:dist:tofn");
nt2 = new TNtuple("nt2","nt2","evt:size0:size1:tof1:tof0:tof:n1:n0:n");
nt3 = new TNtuple("nt3","nt3","evt:tof:start0:start1:dist0:dist1:startold:startnew:flag");
}
return kTRUE;
}
Int_t HParticleStart2HitF::execute(void)
{
Float_t minTime = findMinimumTime();
if (minTime < 0) return 0;
startTimeOriginal = findOriginalStartTime();
firstCluster.clear();
secondCluster.clear();
fSecondTime = -10000;
Float_t startTime = findStartTime(minTime + startTimeOriginal);
correctTof(startTime - startTimeOriginal);
correctRpc(startTime - startTimeOriginal);
correctStart(startTime - startTimeOriginal);
return 0;
}
Float_t HParticleStart2HitF::findMinimumTime(void)
{
HTofHit* pTofHit = NULL;
HRpcHit* pRpcHit = NULL;
vector<Float_t> tofList, rpcList, allList;
if(fCatTof) {
for (Int_t tofEntry = 0; tofEntry < fCatTof->getEntries(); ++tofEntry)
{
if (NULL == (pTofHit = static_cast<HTofHit*>(fCatTof->getObject(tofEntry)))) {
Error("findMinimumTime", "Pointer to HTofHit object == NULL, returning");
return -1;
}
if(gHades->getEmbeddingMode()>0){
HTofHitSim* pTofHitSim = 0;
pTofHitSim = dynamic_cast<HTofHitSim*>(pTofHit);
if(pTofHitSim){
if(pTofHitSim->getNTrack1() > 0 || pTofHitSim->getNTrack2() > 0) continue;
}
}
Float_t tofTof = pTofHit->getTof();
if ( (tofTof < 0) || (tofTof > 300) ) continue;
Float_t distTof = 0;
pTofHit->getDistance(distTof);
if (distTof > 3000) continue;
tofList.push_back(2100. * tofTof / distTof);
allList.push_back(2100. * tofTof / distTof);
if (bDebug) nt1->Fill(gHades->getEventCounter(), 1, tofTof, distTof, 2100. * tofTof / distTof);
}
}
Int_t tracksL[10];
Int_t tracksR[10];
if(fCatRpc){
for (Int_t rpcEntry = 0; rpcEntry < fCatRpc->getEntries(); ++rpcEntry)
{
if (NULL == (pRpcHit = static_cast<HRpcHit*>(fCatRpc->getObject(rpcEntry)))) {
Error("execute", "Pointer to HRpcHit object == NULL, returning");
return -1;
}
if(gHades->getEmbeddingMode()>0){
HRpcHitSim* pRpcHitSim = 0;
pRpcHitSim = dynamic_cast<HRpcHitSim*>(pRpcHit);
if(pRpcHitSim){
pRpcHitSim->getTrackLArray(tracksL);
pRpcHitSim->getTrackRArray(tracksR);
Bool_t simTrack=kFALSE;
for(Int_t i = 0; i < 10; i++){
if(tracksL[i] > 0 || tracksR[i] > 0) { simTrack = kTRUE; break;}
}
if(simTrack) continue;
}
}
Float_t tofRpc = pRpcHit->getTof();
if ( (tofRpc < 0) || (tofRpc > 300) ) continue;
Float_t xRpc = 0., yRpc = 0., zRpc = 0.;
pRpcHit->getXYZLab(xRpc, yRpc, zRpc);
Float_t distRpc = TMath::Sqrt(xRpc * xRpc + yRpc * yRpc + zRpc * zRpc);
if (distRpc > 3000) continue;
rpcList.push_back(2100. * tofRpc / distRpc);
allList.push_back(2100. * tofRpc / distRpc);
if (bDebug) nt1->Fill(gHades->getEventCounter(), 0, tofRpc, distRpc, 2100. * tofRpc / distRpc);
}
}
if (allList.size() == 0) return -1;
std::sort(tofList.begin(), tofList.end());
std::sort(rpcList.begin(), rpcList.end());
std::sort(allList.begin(), allList.end());
Float_t tofSum = 0, rpcSum = 0, allSum = 0;
Float_t tofMean = 0, rpcMean = 0, allMean = 0;
Int_t tofCount = 0, rpcCount = 0, allCount = 0;
for (vector<Float_t>::iterator it = tofList.begin(); it != tofList.end(); ++it) {
if (tofCount < 3) {
tofSum += *it;
tofCount++;
}
}
if (tofCount > 0) tofMean = tofSum / tofCount;
for (vector<Float_t>::iterator it = rpcList.begin(); it != rpcList.end(); ++it) {
if (rpcCount < 3) {
rpcSum += *it;
rpcCount++;
}
}
if (rpcCount > 0) rpcMean = rpcSum/rpcCount;
for (vector<Float_t>::iterator it = allList.begin(); it != allList.end(); ++it) {
if (allCount < 3) {
allSum += *it;
allCount++;
}
}
if (allCount > 0) allMean = allSum / allCount;
if (bDebug) nt2->Fill(gHades->getEventCounter(), rpcList.size(), tofList.size(), tofMean, rpcMean, allMean, tofCount, rpcCount, allCount);
return allMean;
}
Float_t HParticleStart2HitF::findOriginalStartTime(void)
{
Float_t start_time = 0;
if(fCatStartHit)
{
HStart2Hit* pStartHit = NULL;
for (Int_t startEntry = 0; startEntry < fCatStartHit->getEntries(); ++startEntry)
{
if (NULL == (pStartHit = static_cast<HStart2Hit*>(fCatStartHit->getObject(startEntry)))) {
Error("findOriginalStartTime", "Pointer to HStartHit object == NULL, returning");
return -1;
}
start_time = pStartHit->getTime();
}
}
return start_time;
}
Float_t HParticleStart2HitF::findStartTime(Float_t minTof)
{
Float_t startTimeDiff[2] = { 300., 300.};
Float_t startTime [2] = { 300., 300. };
Int_t strip[2]={-1,-1};
if(fCatStartCal)
{
HStart2Cal* pStartCal = NULL;
for (Int_t startEntry = 0; startEntry < fCatStartCal->getEntries(); ++startEntry)
{
if (NULL == (pStartCal = static_cast<HStart2Cal*>(fCatStartCal->getObject(startEntry)))) {
Error("findStartTime", "Pointer to HStartCal object == NULL, returning");
return -1;
}
Int_t mod = pStartCal->getModule();
if (mod > 1) continue;
for (Int_t nStart = 0; nStart < pStartCal->getMaxMultiplicity(); nStart++)
{
Float_t time = pStartCal->getTime(nStart + 1);
if ( ((minTof-time) < timeCutL) || ((minTof-time) > timeCutR) ) continue;
if (TMath::Abs(minTof - time - 7.) < TMath::Abs(startTimeDiff[mod]))
{
startTimeDiff[mod] = minTof - time - 7.;
startTime [mod] = time;
strip [mod] = startEntry*1000+nStart+1;
}
}
}
}
Float_t newStart = 0;
startFlag = -1;
if ( (startTime[0] != 300) && (startTime[1] != 300) )
{
if (TMath::Abs(startTime[0] - startTime[1]) < 0.5)
{
newStart = 0.5 * (startTime[0] + startTime[1]);
startFlag = 2;
} else {
if (TMath::Abs(startTimeDiff[0]) < TMath::Abs(startTimeDiff[1]))
{
newStart = startTime[0];
startFlag = 0;
}
else
{
newStart = startTime[1];
startFlag = 1;
}
}
}
else
{
if (startTime[0] != 300)
{
newStart = startTime[0];
startFlag = 0;
}
if (startTime[1] != 300)
{
newStart = startTime[1];
startFlag = 1;
}
}
if(startFlag>-1){
Float_t minDiffSecond = 0.5;
if(startFlag == 0 || startFlag == 2) firstCluster.push_back(strip[0]);
if(startFlag == 1 || startFlag == 2) firstCluster.push_back(strip[1]);
vector<Int_t> vtemp;
Int_t nextHit =-1;
Float_t timediff = 100000;
Float_t newStart2= -100000;
HStart2Cal* pStartCal = NULL;
for (Int_t startEntry = 0; startEntry < fCatStartCal->getEntries(); ++startEntry)
{
if (NULL == (pStartCal = static_cast<HStart2Cal*>(fCatStartCal->getObject(startEntry)))) {
Error("findStartTime", "Pointer to HStartCal object == NULL, returning");
return -1;
}
Int_t mod = pStartCal->getModule();
if (mod > 1) continue;
for (Int_t nStart = 0; nStart < pStartCal->getMaxMultiplicity(); nStart++)
{
Float_t time = pStartCal->getTime(nStart + 1);
if ( ((minTof-time) < timeCutL) || ((minTof-time) > timeCutR) ) continue;
Int_t newstrip = startEntry*1000+nStart+1 ;
Float_t diff = TMath::Abs( newStart - time );
if (diff < 0.5)
{
if(find(firstCluster.begin(),firstCluster.end(),newstrip)==firstCluster.end()){
firstCluster.push_back(newstrip);
}
} else {
if (diff > minDiffSecond)
{
if(diff<timediff) {
timediff = diff;
newStart2 = time;
nextHit = newstrip;
}
vtemp.push_back(newstrip);
}
}
}
}
if(vtemp.size()>0){
fSecondTime = newStart2;
secondCluster.push_back(nextHit);
for(UInt_t i=0;i<vtemp.size();i++){
if(find(secondCluster.begin(),secondCluster.end(),vtemp[i])==secondCluster.end()){
secondCluster.push_back(vtemp[i]);
}
}
}
}
if (bDebug) nt3->Fill(gHades->getEventCounter(), minTof, startTime[0], startTime[1], startTimeDiff[0], startTimeDiff[1], startTimeOriginal, newStart, startFlag);
return newStart;
}
void HParticleStart2HitF::correctTof(Float_t corrTime)
{
if(fCatTof){
HTofHit* pTofHit = NULL;
for (Int_t tofEntry = 0; tofEntry < fCatTof->getEntries(); ++tofEntry)
{
if (NULL == (pTofHit = static_cast<HTofHit*>(fCatTof->getObject(tofEntry)))) {
Error("correctTof", "Pointer to HTofHit object == NULL, returning");
return;
}
if(gHades->getEmbeddingMode()>0){
HTofHitSim* pTofHitSim = 0;
pTofHitSim = dynamic_cast<HTofHitSim*>(pTofHit);
if(pTofHitSim){
if(pTofHitSim->getNTrack1() > 0 || pTofHitSim->getNTrack2() > 0) continue;
}
}
Float_t tofTof = pTofHit->getTof();
pTofHit->setTof(tofTof - corrTime);
}
}
if(fCatTofClu){
HTofCluster* pTofCluster = NULL;
for (Int_t tofEntry = 0; tofEntry < fCatTofClu->getEntries(); ++tofEntry)
{
if (NULL == (pTofCluster = static_cast<HTofCluster*>(fCatTofClu->getObject(tofEntry)))) {
Error("findMinimumTime", "Pointer to HTofCluster object == NULL, returning");
return;
}
if(gHades->getEmbeddingMode()>0){
HTofClusterSim* pTofClusterSim = 0;
pTofClusterSim = dynamic_cast<HTofClusterSim*>(pTofCluster);
if(pTofClusterSim){
if(pTofClusterSim->getNTrack1() > 0 || pTofClusterSim->getNTrack2() > 0) continue;
}
}
Float_t tofTof = pTofCluster->getTof();
pTofCluster->setTof(tofTof - corrTime);
}
}
return;
}
void HParticleStart2HitF::correctRpc(Float_t corrTime)
{
if(fCatRpc){
Int_t tracksL[10];
Int_t tracksR[10];
HRpcHit* pRpcHit = NULL;
for (Int_t tofEntry = 0; tofEntry < fCatRpc->getEntries(); ++tofEntry)
{
if (NULL == (pRpcHit = static_cast<HRpcHit*>(fCatRpc->getObject(tofEntry)))) {
Error("correctRpc", "Pointer to HRpcHit object == NULL, returning");
return;
}
if(gHades->getEmbeddingMode()>0){
HRpcHitSim* pRpcHitSim = 0;
pRpcHitSim = dynamic_cast<HRpcHitSim*>(pRpcHit);
if(pRpcHitSim){
pRpcHitSim->getTrackLArray(tracksL);
pRpcHitSim->getTrackRArray(tracksR);
Bool_t simTrack=kFALSE;
for(Int_t i = 0; i < 10; i++){
if(tracksL[i] > 0 || tracksR[i] > 0) { simTrack = kTRUE; break;}
}
if(simTrack) continue;
}
}
Float_t tofRpc = pRpcHit->getTof();
Float_t newTof = tofRpc - corrTime;
Float_t acharge = pRpcHit->getCharge();
Float_t axmod = pRpcHit->getXMod();
Float_t aymod = pRpcHit->getYMod();
Float_t azmod = pRpcHit->getZMod();
pRpcHit->setHit(newTof, acharge, axmod, aymod, azmod);
}
}
if(fCatRpcClu){
Int_t tracks[4];
HRpcCluster* pRpcCluster = NULL;
for (Int_t tofEntry = 0; tofEntry < fCatRpcClu->getEntries(); ++tofEntry)
{
if (NULL == (pRpcCluster = static_cast<HRpcCluster*>(fCatRpcClu->getObject(tofEntry)))) {
Error("findMinimumTime", "Pointer to HRpcCluster object == NULL, returning");
return;
}
if(gHades->getEmbeddingMode()>0){
HRpcClusterSim* pRpcClusterSim = 0;
pRpcClusterSim = dynamic_cast<HRpcClusterSim*>(pRpcCluster);
if(pRpcClusterSim){
pRpcClusterSim->getTrackList(tracks);
Bool_t simTrack=kFALSE;
for(Int_t i = 0; i < 4; i++){
if(tracks[i] > 0) { simTrack = kTRUE; break;}
}
if(simTrack) continue;
}
}
Float_t tofRpc = pRpcCluster->getTof();
Float_t newTof = tofRpc - corrTime;
Float_t acharge = pRpcCluster->getCharge();
Float_t axmod = pRpcCluster->getXMod();
Float_t aymod = pRpcCluster->getYMod();
Float_t azmod = pRpcCluster->getZMod();
pRpcCluster->setCluster(newTof, acharge, axmod, aymod, azmod);
}
}
return;
}
void HParticleStart2HitF::correctStart(Float_t corrTime)
{
if(fCatStartHit){
HStart2Hit* pStartHit = NULL;
for (Int_t startEntry = 0; startEntry < fCatStartHit->getEntries(); ++startEntry)
{
if (NULL == (pStartHit = static_cast<HStart2Hit*>(fCatStartHit->getObject(startEntry)))) {
Error("correctStart", "Pointer to HStart2Hit object == NULL, returning");
return;
}
Float_t timeStart = 0, widthStart = 0;
pStartHit->getTimeAndWidth(timeStart, widthStart);
pStartHit->setTimeAndWidth(timeStart + corrTime, widthStart);
pStartHit->setCorrFlag(startFlag);
pStartHit->setIteration(2);
if(startFlag!=-1){
pStartHit->resetClusterStrip(2);
for(UInt_t i=0;i<firstCluster.size();i++){
pStartHit->setClusterStrip (0, firstCluster[i]);
}
for(UInt_t i=0;i<secondCluster.size();i++){
pStartHit->setClusterStrip (1, secondCluster[i]);
}
pStartHit->setSecondTime(fSecondTime);
if(secondCluster.size()>0) pStartHit->setMultiplicity(2);
else pStartHit->setMultiplicity(1);
}
}
}
return;
}
Bool_t HParticleStart2HitF::finalize(void)
{
if (bDebug){
out->cd();
nt1->Write();
nt2->Write();
nt3->Write();
out->Save();
nt1->Delete();
nt2->Delete();
nt3->Delete();
nt1 = 0;
nt2 = 0;
nt3 = 0;
out->Close();
}
return kTRUE;
}
hparticlestart2hitf.cc:10 hparticlestart2hitf.cc:11 hparticlestart2hitf.cc:12 hparticlestart2hitf.cc:13 hparticlestart2hitf.cc:14 hparticlestart2hitf.cc:15 hparticlestart2hitf.cc:16 hparticlestart2hitf.cc:17 hparticlestart2hitf.cc:18 hparticlestart2hitf.cc:19 hparticlestart2hitf.cc:20 hparticlestart2hitf.cc:21 hparticlestart2hitf.cc:22 hparticlestart2hitf.cc:23 hparticlestart2hitf.cc:24 hparticlestart2hitf.cc:25 hparticlestart2hitf.cc:26 hparticlestart2hitf.cc:27 hparticlestart2hitf.cc:28 hparticlestart2hitf.cc:29 hparticlestart2hitf.cc:30 hparticlestart2hitf.cc:31 hparticlestart2hitf.cc:32 hparticlestart2hitf.cc:33 hparticlestart2hitf.cc:34 hparticlestart2hitf.cc:35 hparticlestart2hitf.cc:36 hparticlestart2hitf.cc:37 hparticlestart2hitf.cc:38 hparticlestart2hitf.cc:39 hparticlestart2hitf.cc:40 hparticlestart2hitf.cc:41 hparticlestart2hitf.cc:42 hparticlestart2hitf.cc:43 hparticlestart2hitf.cc:44 hparticlestart2hitf.cc:45 hparticlestart2hitf.cc:46 hparticlestart2hitf.cc:47 hparticlestart2hitf.cc:48 hparticlestart2hitf.cc:49 hparticlestart2hitf.cc:50 hparticlestart2hitf.cc:51 hparticlestart2hitf.cc:52 hparticlestart2hitf.cc:53 hparticlestart2hitf.cc:54 hparticlestart2hitf.cc:55 hparticlestart2hitf.cc:56 hparticlestart2hitf.cc:57 hparticlestart2hitf.cc:58 hparticlestart2hitf.cc:59 hparticlestart2hitf.cc:60 hparticlestart2hitf.cc:61 hparticlestart2hitf.cc:62 hparticlestart2hitf.cc:63 hparticlestart2hitf.cc:64 hparticlestart2hitf.cc:65 hparticlestart2hitf.cc:66 hparticlestart2hitf.cc:67 hparticlestart2hitf.cc:68 hparticlestart2hitf.cc:69 hparticlestart2hitf.cc:70 hparticlestart2hitf.cc:71 hparticlestart2hitf.cc:72 hparticlestart2hitf.cc:73 hparticlestart2hitf.cc:74 hparticlestart2hitf.cc:75 hparticlestart2hitf.cc:76 hparticlestart2hitf.cc:77 hparticlestart2hitf.cc:78 hparticlestart2hitf.cc:79 hparticlestart2hitf.cc:80 hparticlestart2hitf.cc:81 hparticlestart2hitf.cc:82 hparticlestart2hitf.cc:83 hparticlestart2hitf.cc:84 hparticlestart2hitf.cc:85 hparticlestart2hitf.cc:86 hparticlestart2hitf.cc:87 hparticlestart2hitf.cc:88 hparticlestart2hitf.cc:89 hparticlestart2hitf.cc:90 hparticlestart2hitf.cc:91 hparticlestart2hitf.cc:92 hparticlestart2hitf.cc:93 hparticlestart2hitf.cc:94 hparticlestart2hitf.cc:95 hparticlestart2hitf.cc:96 hparticlestart2hitf.cc:97 hparticlestart2hitf.cc:98 hparticlestart2hitf.cc:99 hparticlestart2hitf.cc:100 hparticlestart2hitf.cc:101 hparticlestart2hitf.cc:102 hparticlestart2hitf.cc:103 hparticlestart2hitf.cc:104 hparticlestart2hitf.cc:105 hparticlestart2hitf.cc:106 hparticlestart2hitf.cc:107 hparticlestart2hitf.cc:108 hparticlestart2hitf.cc:109 hparticlestart2hitf.cc:110 hparticlestart2hitf.cc:111 hparticlestart2hitf.cc:112 hparticlestart2hitf.cc:113 hparticlestart2hitf.cc:114 hparticlestart2hitf.cc:115 hparticlestart2hitf.cc:116 hparticlestart2hitf.cc:117 hparticlestart2hitf.cc:118 hparticlestart2hitf.cc:119 hparticlestart2hitf.cc:120 hparticlestart2hitf.cc:121 hparticlestart2hitf.cc:122 hparticlestart2hitf.cc:123 hparticlestart2hitf.cc:124 hparticlestart2hitf.cc:125 hparticlestart2hitf.cc:126 hparticlestart2hitf.cc:127 hparticlestart2hitf.cc:128 hparticlestart2hitf.cc:129 hparticlestart2hitf.cc:130 hparticlestart2hitf.cc:131 hparticlestart2hitf.cc:132 hparticlestart2hitf.cc:133 hparticlestart2hitf.cc:134 hparticlestart2hitf.cc:135 hparticlestart2hitf.cc:136 hparticlestart2hitf.cc:137 hparticlestart2hitf.cc:138 hparticlestart2hitf.cc:139 hparticlestart2hitf.cc:140 hparticlestart2hitf.cc:141 hparticlestart2hitf.cc:142 hparticlestart2hitf.cc:143 hparticlestart2hitf.cc:144 hparticlestart2hitf.cc:145 hparticlestart2hitf.cc:146 hparticlestart2hitf.cc:147 hparticlestart2hitf.cc:148 hparticlestart2hitf.cc:149 hparticlestart2hitf.cc:150 hparticlestart2hitf.cc:151 hparticlestart2hitf.cc:152 hparticlestart2hitf.cc:153 hparticlestart2hitf.cc:154 hparticlestart2hitf.cc:155 hparticlestart2hitf.cc:156 hparticlestart2hitf.cc:157 hparticlestart2hitf.cc:158 hparticlestart2hitf.cc:159 hparticlestart2hitf.cc:160 hparticlestart2hitf.cc:161 hparticlestart2hitf.cc:162 hparticlestart2hitf.cc:163 hparticlestart2hitf.cc:164 hparticlestart2hitf.cc:165 hparticlestart2hitf.cc:166 hparticlestart2hitf.cc:167 hparticlestart2hitf.cc:168 hparticlestart2hitf.cc:169 hparticlestart2hitf.cc:170 hparticlestart2hitf.cc:171 hparticlestart2hitf.cc:172 hparticlestart2hitf.cc:173 hparticlestart2hitf.cc:174 hparticlestart2hitf.cc:175 hparticlestart2hitf.cc:176 hparticlestart2hitf.cc:177 hparticlestart2hitf.cc:178 hparticlestart2hitf.cc:179 hparticlestart2hitf.cc:180 hparticlestart2hitf.cc:181 hparticlestart2hitf.cc:182 hparticlestart2hitf.cc:183 hparticlestart2hitf.cc:184 hparticlestart2hitf.cc:185 hparticlestart2hitf.cc:186 hparticlestart2hitf.cc:187 hparticlestart2hitf.cc:188 hparticlestart2hitf.cc:189 hparticlestart2hitf.cc:190 hparticlestart2hitf.cc:191 hparticlestart2hitf.cc:192 hparticlestart2hitf.cc:193 hparticlestart2hitf.cc:194 hparticlestart2hitf.cc:195 hparticlestart2hitf.cc:196 hparticlestart2hitf.cc:197 hparticlestart2hitf.cc:198 hparticlestart2hitf.cc:199 hparticlestart2hitf.cc:200 hparticlestart2hitf.cc:201 hparticlestart2hitf.cc:202 hparticlestart2hitf.cc:203 hparticlestart2hitf.cc:204 hparticlestart2hitf.cc:205 hparticlestart2hitf.cc:206 hparticlestart2hitf.cc:207 hparticlestart2hitf.cc:208 hparticlestart2hitf.cc:209 hparticlestart2hitf.cc:210 hparticlestart2hitf.cc:211 hparticlestart2hitf.cc:212 hparticlestart2hitf.cc:213 hparticlestart2hitf.cc:214 hparticlestart2hitf.cc:215 hparticlestart2hitf.cc:216 hparticlestart2hitf.cc:217 hparticlestart2hitf.cc:218 hparticlestart2hitf.cc:219 hparticlestart2hitf.cc:220 hparticlestart2hitf.cc:221 hparticlestart2hitf.cc:222 hparticlestart2hitf.cc:223 hparticlestart2hitf.cc:224 hparticlestart2hitf.cc:225 hparticlestart2hitf.cc:226 hparticlestart2hitf.cc:227 hparticlestart2hitf.cc:228 hparticlestart2hitf.cc:229 hparticlestart2hitf.cc:230 hparticlestart2hitf.cc:231 hparticlestart2hitf.cc:232 hparticlestart2hitf.cc:233 hparticlestart2hitf.cc:234 hparticlestart2hitf.cc:235 hparticlestart2hitf.cc:236 hparticlestart2hitf.cc:237 hparticlestart2hitf.cc:238 hparticlestart2hitf.cc:239 hparticlestart2hitf.cc:240 hparticlestart2hitf.cc:241 hparticlestart2hitf.cc:242 hparticlestart2hitf.cc:243 hparticlestart2hitf.cc:244 hparticlestart2hitf.cc:245 hparticlestart2hitf.cc:246 hparticlestart2hitf.cc:247 hparticlestart2hitf.cc:248 hparticlestart2hitf.cc:249 hparticlestart2hitf.cc:250 hparticlestart2hitf.cc:251 hparticlestart2hitf.cc:252 hparticlestart2hitf.cc:253 hparticlestart2hitf.cc:254 hparticlestart2hitf.cc:255 hparticlestart2hitf.cc:256 hparticlestart2hitf.cc:257 hparticlestart2hitf.cc:258 hparticlestart2hitf.cc:259 hparticlestart2hitf.cc:260 hparticlestart2hitf.cc:261 hparticlestart2hitf.cc:262 hparticlestart2hitf.cc:263 hparticlestart2hitf.cc:264 hparticlestart2hitf.cc:265 hparticlestart2hitf.cc:266 hparticlestart2hitf.cc:267 hparticlestart2hitf.cc:268 hparticlestart2hitf.cc:269 hparticlestart2hitf.cc:270 hparticlestart2hitf.cc:271 hparticlestart2hitf.cc:272 hparticlestart2hitf.cc:273 hparticlestart2hitf.cc:274 hparticlestart2hitf.cc:275 hparticlestart2hitf.cc:276 hparticlestart2hitf.cc:277 hparticlestart2hitf.cc:278 hparticlestart2hitf.cc:279 hparticlestart2hitf.cc:280 hparticlestart2hitf.cc:281 hparticlestart2hitf.cc:282 hparticlestart2hitf.cc:283 hparticlestart2hitf.cc:284 hparticlestart2hitf.cc:285 hparticlestart2hitf.cc:286 hparticlestart2hitf.cc:287 hparticlestart2hitf.cc:288 hparticlestart2hitf.cc:289 hparticlestart2hitf.cc:290 hparticlestart2hitf.cc:291 hparticlestart2hitf.cc:292 hparticlestart2hitf.cc:293 hparticlestart2hitf.cc:294 hparticlestart2hitf.cc:295 hparticlestart2hitf.cc:296 hparticlestart2hitf.cc:297 hparticlestart2hitf.cc:298 hparticlestart2hitf.cc:299 hparticlestart2hitf.cc:300 hparticlestart2hitf.cc:301 hparticlestart2hitf.cc:302 hparticlestart2hitf.cc:303 hparticlestart2hitf.cc:304 hparticlestart2hitf.cc:305 hparticlestart2hitf.cc:306 hparticlestart2hitf.cc:307 hparticlestart2hitf.cc:308 hparticlestart2hitf.cc:309 hparticlestart2hitf.cc:310 hparticlestart2hitf.cc:311 hparticlestart2hitf.cc:312 hparticlestart2hitf.cc:313 hparticlestart2hitf.cc:314 hparticlestart2hitf.cc:315 hparticlestart2hitf.cc:316 hparticlestart2hitf.cc:317 hparticlestart2hitf.cc:318 hparticlestart2hitf.cc:319 hparticlestart2hitf.cc:320 hparticlestart2hitf.cc:321 hparticlestart2hitf.cc:322 hparticlestart2hitf.cc:323 hparticlestart2hitf.cc:324 hparticlestart2hitf.cc:325 hparticlestart2hitf.cc:326 hparticlestart2hitf.cc:327 hparticlestart2hitf.cc:328 hparticlestart2hitf.cc:329 hparticlestart2hitf.cc:330 hparticlestart2hitf.cc:331 hparticlestart2hitf.cc:332 hparticlestart2hitf.cc:333 hparticlestart2hitf.cc:334 hparticlestart2hitf.cc:335 hparticlestart2hitf.cc:336 hparticlestart2hitf.cc:337 hparticlestart2hitf.cc:338 hparticlestart2hitf.cc:339 hparticlestart2hitf.cc:340 hparticlestart2hitf.cc:341 hparticlestart2hitf.cc:342 hparticlestart2hitf.cc:343 hparticlestart2hitf.cc:344 hparticlestart2hitf.cc:345 hparticlestart2hitf.cc:346 hparticlestart2hitf.cc:347 hparticlestart2hitf.cc:348 hparticlestart2hitf.cc:349 hparticlestart2hitf.cc:350 hparticlestart2hitf.cc:351 hparticlestart2hitf.cc:352 hparticlestart2hitf.cc:353 hparticlestart2hitf.cc:354 hparticlestart2hitf.cc:355 hparticlestart2hitf.cc:356 hparticlestart2hitf.cc:357 hparticlestart2hitf.cc:358 hparticlestart2hitf.cc:359 hparticlestart2hitf.cc:360 hparticlestart2hitf.cc:361 hparticlestart2hitf.cc:362 hparticlestart2hitf.cc:363 hparticlestart2hitf.cc:364 hparticlestart2hitf.cc:365 hparticlestart2hitf.cc:366 hparticlestart2hitf.cc:367 hparticlestart2hitf.cc:368 hparticlestart2hitf.cc:369 hparticlestart2hitf.cc:370 hparticlestart2hitf.cc:371 hparticlestart2hitf.cc:372 hparticlestart2hitf.cc:373 hparticlestart2hitf.cc:374 hparticlestart2hitf.cc:375 hparticlestart2hitf.cc:376 hparticlestart2hitf.cc:377 hparticlestart2hitf.cc:378 hparticlestart2hitf.cc:379 hparticlestart2hitf.cc:380 hparticlestart2hitf.cc:381 hparticlestart2hitf.cc:382 hparticlestart2hitf.cc:383 hparticlestart2hitf.cc:384 hparticlestart2hitf.cc:385 hparticlestart2hitf.cc:386 hparticlestart2hitf.cc:387 hparticlestart2hitf.cc:388 hparticlestart2hitf.cc:389 hparticlestart2hitf.cc:390 hparticlestart2hitf.cc:391 hparticlestart2hitf.cc:392 hparticlestart2hitf.cc:393 hparticlestart2hitf.cc:394 hparticlestart2hitf.cc:395 hparticlestart2hitf.cc:396 hparticlestart2hitf.cc:397 hparticlestart2hitf.cc:398 hparticlestart2hitf.cc:399 hparticlestart2hitf.cc:400 hparticlestart2hitf.cc:401 hparticlestart2hitf.cc:402 hparticlestart2hitf.cc:403 hparticlestart2hitf.cc:404 hparticlestart2hitf.cc:405 hparticlestart2hitf.cc:406 hparticlestart2hitf.cc:407 hparticlestart2hitf.cc:408 hparticlestart2hitf.cc:409 hparticlestart2hitf.cc:410 hparticlestart2hitf.cc:411 hparticlestart2hitf.cc:412 hparticlestart2hitf.cc:413 hparticlestart2hitf.cc:414 hparticlestart2hitf.cc:415 hparticlestart2hitf.cc:416 hparticlestart2hitf.cc:417 hparticlestart2hitf.cc:418 hparticlestart2hitf.cc:419 hparticlestart2hitf.cc:420 hparticlestart2hitf.cc:421 hparticlestart2hitf.cc:422 hparticlestart2hitf.cc:423 hparticlestart2hitf.cc:424 hparticlestart2hitf.cc:425 hparticlestart2hitf.cc:426 hparticlestart2hitf.cc:427 hparticlestart2hitf.cc:428 hparticlestart2hitf.cc:429 hparticlestart2hitf.cc:430 hparticlestart2hitf.cc:431 hparticlestart2hitf.cc:432 hparticlestart2hitf.cc:433 hparticlestart2hitf.cc:434 hparticlestart2hitf.cc:435 hparticlestart2hitf.cc:436 hparticlestart2hitf.cc:437 hparticlestart2hitf.cc:438 hparticlestart2hitf.cc:439 hparticlestart2hitf.cc:440 hparticlestart2hitf.cc:441 hparticlestart2hitf.cc:442 hparticlestart2hitf.cc:443 hparticlestart2hitf.cc:444 hparticlestart2hitf.cc:445 hparticlestart2hitf.cc:446 hparticlestart2hitf.cc:447 hparticlestart2hitf.cc:448 hparticlestart2hitf.cc:449 hparticlestart2hitf.cc:450 hparticlestart2hitf.cc:451 hparticlestart2hitf.cc:452 hparticlestart2hitf.cc:453 hparticlestart2hitf.cc:454 hparticlestart2hitf.cc:455 hparticlestart2hitf.cc:456 hparticlestart2hitf.cc:457 hparticlestart2hitf.cc:458 hparticlestart2hitf.cc:459 hparticlestart2hitf.cc:460 hparticlestart2hitf.cc:461 hparticlestart2hitf.cc:462 hparticlestart2hitf.cc:463 hparticlestart2hitf.cc:464 hparticlestart2hitf.cc:465 hparticlestart2hitf.cc:466 hparticlestart2hitf.cc:467 hparticlestart2hitf.cc:468 hparticlestart2hitf.cc:469 hparticlestart2hitf.cc:470 hparticlestart2hitf.cc:471 hparticlestart2hitf.cc:472 hparticlestart2hitf.cc:473 hparticlestart2hitf.cc:474 hparticlestart2hitf.cc:475 hparticlestart2hitf.cc:476 hparticlestart2hitf.cc:477 hparticlestart2hitf.cc:478 hparticlestart2hitf.cc:479 hparticlestart2hitf.cc:480 hparticlestart2hitf.cc:481 hparticlestart2hitf.cc:482 hparticlestart2hitf.cc:483 hparticlestart2hitf.cc:484 hparticlestart2hitf.cc:485 hparticlestart2hitf.cc:486 hparticlestart2hitf.cc:487 hparticlestart2hitf.cc:488 hparticlestart2hitf.cc:489 hparticlestart2hitf.cc:490 hparticlestart2hitf.cc:491 hparticlestart2hitf.cc:492 hparticlestart2hitf.cc:493 hparticlestart2hitf.cc:494 hparticlestart2hitf.cc:495 hparticlestart2hitf.cc:496 hparticlestart2hitf.cc:497 hparticlestart2hitf.cc:498 hparticlestart2hitf.cc:499 hparticlestart2hitf.cc:500 hparticlestart2hitf.cc:501 hparticlestart2hitf.cc:502 hparticlestart2hitf.cc:503 hparticlestart2hitf.cc:504 hparticlestart2hitf.cc:505 hparticlestart2hitf.cc:506 hparticlestart2hitf.cc:507 hparticlestart2hitf.cc:508 hparticlestart2hitf.cc:509 hparticlestart2hitf.cc:510 hparticlestart2hitf.cc:511 hparticlestart2hitf.cc:512 hparticlestart2hitf.cc:513 hparticlestart2hitf.cc:514 hparticlestart2hitf.cc:515 hparticlestart2hitf.cc:516 hparticlestart2hitf.cc:517 hparticlestart2hitf.cc:518 hparticlestart2hitf.cc:519 hparticlestart2hitf.cc:520 hparticlestart2hitf.cc:521 hparticlestart2hitf.cc:522 hparticlestart2hitf.cc:523 hparticlestart2hitf.cc:524 hparticlestart2hitf.cc:525 hparticlestart2hitf.cc:526 hparticlestart2hitf.cc:527 hparticlestart2hitf.cc:528 hparticlestart2hitf.cc:529 hparticlestart2hitf.cc:530 hparticlestart2hitf.cc:531 hparticlestart2hitf.cc:532 hparticlestart2hitf.cc:533 hparticlestart2hitf.cc:534 hparticlestart2hitf.cc:535 hparticlestart2hitf.cc:536 hparticlestart2hitf.cc:537 hparticlestart2hitf.cc:538 hparticlestart2hitf.cc:539 hparticlestart2hitf.cc:540 hparticlestart2hitf.cc:541 hparticlestart2hitf.cc:542 hparticlestart2hitf.cc:543 hparticlestart2hitf.cc:544 hparticlestart2hitf.cc:545 hparticlestart2hitf.cc:546 hparticlestart2hitf.cc:547 hparticlestart2hitf.cc:548 hparticlestart2hitf.cc:549 hparticlestart2hitf.cc:550 hparticlestart2hitf.cc:551 hparticlestart2hitf.cc:552 hparticlestart2hitf.cc:553 hparticlestart2hitf.cc:554 hparticlestart2hitf.cc:555 hparticlestart2hitf.cc:556 hparticlestart2hitf.cc:557 hparticlestart2hitf.cc:558 hparticlestart2hitf.cc:559 hparticlestart2hitf.cc:560 hparticlestart2hitf.cc:561 hparticlestart2hitf.cc:562 hparticlestart2hitf.cc:563 hparticlestart2hitf.cc:564 hparticlestart2hitf.cc:565 hparticlestart2hitf.cc:566 hparticlestart2hitf.cc:567 hparticlestart2hitf.cc:568 hparticlestart2hitf.cc:569 hparticlestart2hitf.cc:570 hparticlestart2hitf.cc:571 hparticlestart2hitf.cc:572 hparticlestart2hitf.cc:573 hparticlestart2hitf.cc:574 hparticlestart2hitf.cc:575 hparticlestart2hitf.cc:576 hparticlestart2hitf.cc:577 hparticlestart2hitf.cc:578 hparticlestart2hitf.cc:579 hparticlestart2hitf.cc:580 hparticlestart2hitf.cc:581 hparticlestart2hitf.cc:582 hparticlestart2hitf.cc:583 hparticlestart2hitf.cc:584 hparticlestart2hitf.cc:585 hparticlestart2hitf.cc:586 hparticlestart2hitf.cc:587 hparticlestart2hitf.cc:588 hparticlestart2hitf.cc:589 hparticlestart2hitf.cc:590 hparticlestart2hitf.cc:591 hparticlestart2hitf.cc:592 hparticlestart2hitf.cc:593 hparticlestart2hitf.cc:594 hparticlestart2hitf.cc:595 hparticlestart2hitf.cc:596 hparticlestart2hitf.cc:597 hparticlestart2hitf.cc:598 hparticlestart2hitf.cc:599 hparticlestart2hitf.cc:600 hparticlestart2hitf.cc:601 hparticlestart2hitf.cc:602 hparticlestart2hitf.cc:603 hparticlestart2hitf.cc:604 hparticlestart2hitf.cc:605 hparticlestart2hitf.cc:606 hparticlestart2hitf.cc:607 hparticlestart2hitf.cc:608 hparticlestart2hitf.cc:609 hparticlestart2hitf.cc:610 hparticlestart2hitf.cc:611 hparticlestart2hitf.cc:612 hparticlestart2hitf.cc:613 hparticlestart2hitf.cc:614 hparticlestart2hitf.cc:615 hparticlestart2hitf.cc:616 hparticlestart2hitf.cc:617 hparticlestart2hitf.cc:618 hparticlestart2hitf.cc:619 hparticlestart2hitf.cc:620 hparticlestart2hitf.cc:621 hparticlestart2hitf.cc:622 hparticlestart2hitf.cc:623 hparticlestart2hitf.cc:624 hparticlestart2hitf.cc:625 hparticlestart2hitf.cc:626 hparticlestart2hitf.cc:627 hparticlestart2hitf.cc:628 hparticlestart2hitf.cc:629 hparticlestart2hitf.cc:630 hparticlestart2hitf.cc:631 hparticlestart2hitf.cc:632 hparticlestart2hitf.cc:633 hparticlestart2hitf.cc:634 hparticlestart2hitf.cc:635 hparticlestart2hitf.cc:636 hparticlestart2hitf.cc:637 hparticlestart2hitf.cc:638 hparticlestart2hitf.cc:639 hparticlestart2hitf.cc:640 hparticlestart2hitf.cc:641 hparticlestart2hitf.cc:642 hparticlestart2hitf.cc:643 hparticlestart2hitf.cc:644 hparticlestart2hitf.cc:645 hparticlestart2hitf.cc:646 hparticlestart2hitf.cc:647 hparticlestart2hitf.cc:648 hparticlestart2hitf.cc:649 hparticlestart2hitf.cc:650 hparticlestart2hitf.cc:651 hparticlestart2hitf.cc:652 hparticlestart2hitf.cc:653 hparticlestart2hitf.cc:654 hparticlestart2hitf.cc:655 hparticlestart2hitf.cc:656 hparticlestart2hitf.cc:657 hparticlestart2hitf.cc:658 hparticlestart2hitf.cc:659 hparticlestart2hitf.cc:660 hparticlestart2hitf.cc:661 hparticlestart2hitf.cc:662 hparticlestart2hitf.cc:663 hparticlestart2hitf.cc:664 hparticlestart2hitf.cc:665 hparticlestart2hitf.cc:666 hparticlestart2hitf.cc:667 hparticlestart2hitf.cc:668 hparticlestart2hitf.cc:669 hparticlestart2hitf.cc:670 hparticlestart2hitf.cc:671 hparticlestart2hitf.cc:672 hparticlestart2hitf.cc:673 hparticlestart2hitf.cc:674 hparticlestart2hitf.cc:675 hparticlestart2hitf.cc:676 hparticlestart2hitf.cc:677 hparticlestart2hitf.cc:678 hparticlestart2hitf.cc:679 hparticlestart2hitf.cc:680 hparticlestart2hitf.cc:681 hparticlestart2hitf.cc:682 hparticlestart2hitf.cc:683 hparticlestart2hitf.cc:684 hparticlestart2hitf.cc:685 hparticlestart2hitf.cc:686 hparticlestart2hitf.cc:687 hparticlestart2hitf.cc:688 hparticlestart2hitf.cc:689 hparticlestart2hitf.cc:690 hparticlestart2hitf.cc:691 hparticlestart2hitf.cc:692 hparticlestart2hitf.cc:693 hparticlestart2hitf.cc:694 hparticlestart2hitf.cc:695 hparticlestart2hitf.cc:696 hparticlestart2hitf.cc:697 hparticlestart2hitf.cc:698 hparticlestart2hitf.cc:699 hparticlestart2hitf.cc:700 hparticlestart2hitf.cc:701 hparticlestart2hitf.cc:702 hparticlestart2hitf.cc:703 hparticlestart2hitf.cc:704 hparticlestart2hitf.cc:705 hparticlestart2hitf.cc:706 hparticlestart2hitf.cc:707 hparticlestart2hitf.cc:708 hparticlestart2hitf.cc:709 hparticlestart2hitf.cc:710 hparticlestart2hitf.cc:711