#include "hparticlemetamatcher.h"
#include "hades.h"
#include "hspectrometer.h"
#include "hruntimedb.h"
#include "hcategory.h"
#include "hcategorymanager.h"
#include "hgeomvolume.h"
#include "hgeomcompositevolume.h"
#include "hgeomtransform.h"
#include "hemcdetector.h"
#include "hrpcgeompar.h"
#include "hrpcgeomcellpar.h"
#include "hemcgeompar.h"
#include "htofgeompar.h"
#include "hspecgeompar.h"
#include "hparticlecand.h"
#include "rpcdef.h"
#include "emcdef.h"
#include "tofdef.h"
#include "TMath.h"
ClassImp(HParticleMetaMatcher)
HParticleMetaMatcher::HParticleMetaMatcher(const Text_t *name,const Text_t *title)
: HReconstructor(name,title) {
fCatRpcCluster = NULL;
fCatEmcCluster = NULL;
fCatTofCluster = NULL;
fCatTofHit = NULL;
fRpcGeometry = NULL;
fEmcGeometry = NULL;
fTofGeometry = NULL;
pSpecGeomPar = NULL;
DPlanesRpc = 0;
fDebug = kFALSE;
}
const HGeomVector* HParticleMetaMatcher::getRpcCellGeom(Int_t s,Int_t col,Int_t cell)
{
if(s < 0 || s > 5) return 0;
if(col < 0 || col > 5) return 0;
if(cell < 0 || cell > RPCMAXCELL-1) return 0;
return &cellRPC[s][col][cell][0];
}
const HGeomVector* HParticleMetaMatcher::getTofCellGeom(Int_t s,Int_t mod,Int_t cell)
{
if(s < 0 || s > 5) return 0;
if(mod < 0 || mod > 8) return 0;
if(cell < 0 || cell > 8) return 0;
return &cellRPC[s][mod][cell][0];
}
const HGeomVector* HParticleMetaMatcher::getEmcCellGeom(Int_t s,Int_t cell)
{
if(s < 0 || s > 5) return 0;
if(cell < 0 || cell > EMCMAXCELL-1) return 0;
return &cellEMC[s][cell][0];
}
void HParticleMetaMatcher::calcSegPoints(TVector3& p1,TVector3& p2,Double_t phiseg,Double_t thetaseg,Double_t roseg,Double_t zseg)
{
Double_t Xseg[2],Yseg[2],Zseg[2];
Xseg[0] = roseg*cos(phiseg+TMath::Pi()/2);
Yseg[0] = roseg*sin(phiseg+TMath::Pi()/2);
Zseg[0] = zseg;
Xseg[1] = Xseg[0]+cos(phiseg)*sin(thetaseg);
Yseg[1] = Yseg[0]+sin(phiseg)*sin(thetaseg);
Zseg[1] = Zseg[0]+cos(thetaseg);
p1.SetXYZ(Xseg[0],Yseg[0],Zseg[0]);
p2.SetXYZ(Xseg[1],Yseg[1],Zseg[1]);
}
Bool_t HParticleMetaMatcher::findIntersectionLinePlane(TVector3 &pointIntersect,
const TVector3 &pos, const TVector3 &dir,
const TVector3 &planeCenter, const TVector3 &planeNormal) {
Double_t denom = planeNormal.Dot(dir);
if (denom != 0.0) {
Double_t t = ((planeCenter.x() - pos.x()) * planeNormal.x() +
(planeCenter.y() - pos.y()) * planeNormal.y() +
(planeCenter.z() - pos.z()) * planeNormal.z()) / denom;
pointIntersect = pos + (t * dir);
return kTRUE;
} else {
cout<<"Warning \"findIntersection()\" : , No intersection point found : (plane || track)"<<endl;
return kFALSE;
}
return kFALSE;
}
Bool_t HParticleMetaMatcher::traceToMeta(const HParticleCand* cand,TVector3 &metaHit, const TVector3 &metaCenter, const TVector3 &metaNorm)
{
TVector3 p1;
TVector3 p2;
TVector3 dir;
Double_t phiLab = cand->getPhi2();
Double_t phi = fmod(phiLab,60.F) + 60;
Double_t theta = cand->getTheta2();
Double_t r = cand->getR2();
Double_t z = cand->getZ2();
calcSegPoints(p1,p2,phi*TMath::DegToRad(),theta*TMath::DegToRad(),r,z);
dir = p2 - p1;
return findIntersectionLinePlane(metaHit,p1,dir,metaCenter,metaNorm);
}
Bool_t HParticleMetaMatcher::isInRpcCell(HGeomVector& vmod, Int_t s,Int_t col,Int_t c)
{
HGeomVector& p0 = cellRPC[s][col][c][0];
HGeomVector& p1 = cellRPC[s][col][c][1];
if (p0.Y() > vmod.Y()) return kFALSE;
if (p1.Y() < vmod.Y()) return kFALSE;
Double_t a = p1.X() - p0.X();
Double_t b = p1.Y() - p0.Y();
Double_t x = p0.X() + a * (( p0.Y() - vmod.Y())/b);
if (x < vmod.X()) return kFALSE;
HGeomVector& p2 = cellRPC[s][col][c][2];
HGeomVector& p3 = cellRPC[s][col][c][3];
a = p2.X() - p3.X();
b = p2.Y() - p3.Y();
Double_t x1 = p3.X() + a * (( p3.Y() - vmod.Y())/b);
if (x1 > vmod.X()) return kFALSE;
if(fDebug){
cout<<"isInRpcCell s "<<s<<" col "<<col<<" c "<<setw(2)<<c
<<" p1 "<<setw(10)<< p0.X() <<" , "<<setw(10)<< p0.Y()
<<" p2 "<<setw(10)<< p1.X() <<" , "<<setw(10)<< p1.Y()
<<" p3 "<<setw(10)<< p2.X() <<" , "<<setw(10)<< p2.Y()
<<" p4 "<<setw(10)<< p3.X() <<" , "<<setw(10)<< p3.Y()
<<" hit "<<setw(10)<<vmod.X()<<" , "<<setw(10)<<vmod.Y()<<" calc x "<<setw(10)<<x<<" "<<x1
<<endl;
}
return kTRUE;
}
Bool_t HParticleMetaMatcher::isInEmcCell(HGeomVector& vmod,Int_t s,Int_t c)
{
HGeomVector& p0 = cellEMC[s][c][0];
HGeomVector& p2 = cellEMC[s][c][2];
if (p0.Y() > vmod.Y()) return kFALSE;
if (p2.Y() < vmod.Y()) return kFALSE;
if (p0.X() < vmod.X()) return kFALSE;
if (p2.X() > vmod.X()) return kFALSE;
if(fDebug){
HGeomVector& p1 = cellEMC[s][c][1];
HGeomVector& p3 = cellEMC[s][c][3];
Int_t cell = HEmcDetector::getCellFromPosition(c);
cout<<"isInEmcCell s "<<s<<" c "<<setw(3)<<cell<<" pos "<<setw(3)<<c
<<" p1 "<<setw(10)<< p0.X() <<" , "<<setw(10)<< p0.Y()
<<" p2 "<<setw(10)<< p1.X() <<" , "<<setw(10)<< p1.Y()
<<" p3 "<<setw(10)<< p2.X() <<" , "<<setw(10)<< p2.Y()
<<" p4 "<<setw(10)<< p3.X() <<" , "<<setw(10)<< p3.Y()
<<" hit "<<setw(10)<<vmod.X()<<" , "<<setw(10)<<vmod.Y()
<<endl;
vector<Int_t> vcells;
getEmcCellArray(s,cell,vcells);
cout<<"neighboughrs: "<<flush;
for(UInt_t k = 0; k < vcells.size(); k++){
if(k == 4)cout<<"|"<<vcells[k]<<"| "<<flush;
else cout<<vcells[k]<<" "<<flush;
}
cout<<endl;
}
return kTRUE;
}
Bool_t HParticleMetaMatcher::isInTofCell(HGeomVector& vmod,Int_t s,Int_t m, Int_t c)
{
HGeomVector& p0 = cellTOF[s][m][c][0];
HGeomVector& p2 = cellTOF[s][m][c][2];
if (p0.Y() > vmod.Y()) return kFALSE;
if (p2.Y() < vmod.Y()) return kFALSE;
if (p0.X() < vmod.X()) return kFALSE;
if (p2.X() > vmod.X()) return kFALSE;
if(fDebug){
HGeomVector& p1 = cellTOF[s][m][c][1];
HGeomVector& p3 = cellTOF[s][m][c][3];
cout<<"isInTofCell s "<<s<<" mod "<<m<<" c "<<setw(3)<<c
<<" p1 "<<setw(10)<< p0.X() <<" , "<<setw(10)<< p0.Y()
<<" p2 "<<setw(10)<< p1.X() <<" , "<<setw(10)<< p1.Y()
<<" p3 "<<setw(10)<< p2.X() <<" , "<<setw(10)<< p2.Y()
<<" p4 "<<setw(10)<< p3.X() <<" , "<<setw(10)<< p3.Y()
<<" hit "<<setw(10)<<vmod.X()<<" , "<<setw(10)<<vmod.Y()
<<endl;
}
return kTRUE;
}
void HParticleMetaMatcher::getEmcCellArray(Int_t s,Int_t cell,vector<Int_t>& vcells)
{
vcells.clear();
for(Int_t j = -18; j < 17; j += 17){
for(Int_t i = 0; i < 3; i ++){
if(HEmcDetector::getPositionFromCell(cell + j + i) == -1 ) vcells.push_back(-1);
else vcells.push_back(cell + j + i);
}
}
}
Bool_t HParticleMetaMatcher::init()
{
if(!gHades) {
Error("init()", "HADES not initialized.");
return kFALSE;
}
HRuntimeDb *rtdb=gHades->getRuntimeDb();
if(!rtdb) {
Error("init()", "HADES runtime database not found.");
return kFALSE;
}
fCatRpcCluster = HCategoryManager::getCategory(catRpcCluster);
fCatEmcCluster = HCategoryManager::getCategory(catEmcCluster);
fCatTofCluster = HCategoryManager::getCategory(catTofCluster);
fCatTofHit = HCategoryManager::getCategory(catTofHit);
if(!fCatEmcCluster) Warning("init()", "Category catEmcCluster not found.");
if(!fCatRpcCluster) Warning("init()", "Category catRpcCluster not found.");
if(!fCatTofCluster) Warning("init()", "Category catTofCluster not found.");
if(!fCatTofHit) Warning("init()", "Category catTofHit not found.");
fRpcGeometry = (HRpcGeomPar*) rtdb->getContainer("RpcGeomPar");
pGeomCellPar = (HRpcGeomCellPar*)rtdb->getContainer("RpcGeomCellPar");
pSpecGeomPar = (HSpecGeomPar*) rtdb->getContainer("SpecGeomPar");
fEmcGeometry = (HEmcGeomPar *) rtdb->getContainer("EmcGeomPar");
fTofGeometry = (HTofGeomPar *) rtdb->getContainer("TofGeomPar");
return kTRUE;
}
Bool_t HParticleMetaMatcher::reinit() {
if(pGeomCellPar){
DPlanesRpc = pGeomCellPar->getDPlanes();
}
for(Int_t i = 0; i < 6; i++) {
labSecTrans[i] = pSpecGeomPar->getSector(i)->getTransform();
}
{
for(Int_t s = 0; s < 6; s++) {
Int_t col = 0;
Int_t cell = 0;
HModGeomPar* fmodgeom = fRpcGeometry->getModule(s);
HGeomCompositeVolume* fMod = fmodgeom->getRefVolume();
for(Int_t c = 0; c < fMod->getNumComponents(); c++) {
HGeomVolume* fVol = fMod->getComponent(c);
if(cell == 31) {
col++;
cell = 0;
continue;
}
if(0&& s == 0){
cout<<" col "<<5-col<<" cell " <<cell<<"----------------------------------"<<endl;
HGeomVector v = fVol->getTransform().getTransVector();
cout<<c<<" mod (x,y,z) "<<v.X()<<" "<<v.Y()<<" "<<v.Z()<<" "<<fVol->GetName()<<" "<<fVol->getShape()<<" "<<fVol->getNumPoints()
<< " p0 "<<fVol->getPoint(0)->getX()<< " , "<<fVol->getPoint(0)->getY()
<< " p1 "<<fVol->getPoint(1)->getX()<< " , "<<fVol->getPoint(1)->getY()
<< " p2 "<<fVol->getPoint(2)->getX()<< " , "<<fVol->getPoint(2)->getY()
<< " p3 "<<fVol->getPoint(3)->getX()<< " , "<<fVol->getPoint(3)->getY()
<<endl;
}
for(Int_t i = 0; i < 4; i++) {
cellRPC[s][5-col][cell][i] = *fVol->getPoint(i);
}
cell++;
}
}
}
{
for(Int_t s = 0; s < 6; s ++) {
for(Int_t m = 0; m < 8; m ++) {
HModGeomPar* fmodgeom = fTofGeometry->getModule(s,m);
HGeomCompositeVolume* fMod = fmodgeom->getRefVolume();
for(Int_t c = 0; c < fMod->getNumComponents(); c++) {
HGeomVolume* fVol=fMod->getComponent(c);
HGeomVector v = fVol->getTransform().getTransVector();
for(Int_t i = 0; i < 4; i++) {
cellTOF[s][m][c][i] = v + *fVol->getPoint(i);
}
if(0&& s == 0){
cout<<" mod "<<m<<" c "<<c<<" mod (x,y,z) "<<setw(8)<<v.X()<<" "<<setw(8)<<v.Y()<<" "<<setw(8)<<v.Z()<<" "<<fVol->GetName()<<" "<<fVol->getShape()<<" "<<fVol->getNumPoints()
<< " p0 "<<setw(8)<<cellTOF[s][m][c][0].X()<< " , "<<setw(8)<<cellTOF[s][m][c][0].Y()
<< " p1 "<<setw(8)<<cellTOF[s][m][c][1].X()<< " , "<<setw(8)<<cellTOF[s][m][c][1].Y()
<< " p2 "<<setw(8)<<cellTOF[s][m][c][2].X()<< " , "<<setw(8)<<cellTOF[s][m][c][2].Y()
<< " p3 "<<setw(8)<<cellTOF[s][m][c][3].X()<< " , "<<setw(8)<<cellTOF[s][m][c][3].Y()
<<endl;
}
}
}
}
}
{
for(Int_t s = 0; s < 6; s++) {
HModGeomPar* fmodgeom = fEmcGeometry->getModule(s);
HGeomCompositeVolume* fMod = fmodgeom->getRefVolume();
Int_t n = 0;
for(Int_t c = 0; c < fMod->getNumComponents(); c++) {
HGeomVolume* fVol=fMod->getComponent(c);
if(fVol == NULL || fVol->getNumPoints() != 8) {
continue;
}
HGeomVector v = fVol->getTransform().getTransVector();
if(0&& s == 0){
cout<<c<<" "<<n<<" mod (x,y,z) "<<v.X()<<" "<<v.Y()<<" "<<v.Z()
<< " p0 "<<fVol->getPoint(0)->getX()<< " , "<<fVol->getPoint(0)->getY()
<< " p1 "<<fVol->getPoint(1)->getX()<< " , "<<fVol->getPoint(1)->getY()
<< " p2 "<<fVol->getPoint(2)->getX()<< " , "<<fVol->getPoint(2)->getY()
<< " p3 "<<fVol->getPoint(3)->getX()<< " , "<<fVol->getPoint(3)->getY()
<<endl;
}
for(Int_t i = 0; i < 4; i++) {
cellEMC[s][n][i] = v + *fVol->getPoint(i);
}
if(0&& s == 0){
cout<<c<<" "<<n<<" mod (x,y,z) "<<v.X()<<" "<<v.Y()<<" "<<v.Z()
<< " p0 "<<cellEMC[s][n][0].getX()<< " , "<<cellEMC[s][n][0].getY()
<< " p1 "<<cellEMC[s][n][1].getX()<< " , "<<cellEMC[s][n][1].getY()
<< " p2 "<<cellEMC[s][n][2].getX()<< " , "<<cellEMC[s][n][2].getY()
<< " p3 "<<cellEMC[s][n][3].getX()<< " , "<<cellEMC[s][n][3].getY()
<<endl;
}
n++;
}
}
}
for(Int_t iSec = 0; iSec < 6; iSec++) {
if(fRpcGeometry) {
HModGeomPar *module = fRpcGeometry->getModule(iSec,0);
if(module) {
HGeomTransform modTrans(module->getLabTransform());
modTrans.transTo(labSecTrans[iSec]);
modSecTransRpc[iSec] = modTrans;
HGeomVector r0_mod0(0.0, 0.0, -0.5*DPlanesRpc);
HGeomVector rz_mod(0.0, 0.0, 1.0);
HGeomVector nRpc = modTrans.transFrom(rz_mod) - modTrans.transFrom(r0_mod0);
normVecRpc[iSec][0].SetXYZ(nRpc.getX(), nRpc.getY(), nRpc.getZ());
HGeomVector cRpc = modTrans.transFrom(r0_mod0);
centerVecRpc[iSec][0].SetXYZ(cRpc.getX(), cRpc.getY(), cRpc.getZ());
HGeomVector r0_mod1(0.0, 0.0, 0.5*DPlanesRpc);
nRpc = modTrans.transFrom(rz_mod) - modTrans.transFrom(r0_mod1);
normVecRpc[iSec][1].SetXYZ(nRpc.getX(), nRpc.getY(), nRpc.getZ());
cRpc = modTrans.transFrom(r0_mod1);
centerVecRpc[iSec][1].SetXYZ(cRpc.getX(), cRpc.getY(), cRpc.getZ());
HGeomVector r0_mod2(0.0, 0.0, 0);
nRpc = modTrans.transFrom(rz_mod) - modTrans.transFrom(r0_mod2);
normVecRpc[iSec][2].SetXYZ(nRpc.getX(), nRpc.getY(), nRpc.getZ());
cRpc = modTrans.transFrom(r0_mod2);
centerVecRpc[iSec][2].SetXYZ(cRpc.getX(), cRpc.getY(), cRpc.getZ());
}
}
if (fEmcGeometry) {
HModGeomPar *pmodgeom = fEmcGeometry->getModule(iSec);
HGeomTransform modTrans(pmodgeom->getLabTransform());
modTrans.transTo(labSecTrans[iSec]);
modSecTransEmc[iSec] = modTrans;
HGeomVector r0_mod(0.0, 0.0, 0.);
HGeomVector rz_mod(0.0, 0.0, 1.);
HGeomVector nEmc = modTrans.transFrom(rz_mod) - modTrans.transFrom(r0_mod);
normVecEmc[iSec].SetXYZ(nEmc.getX(), nEmc.getY(), nEmc.getZ()) ;
HGeomVector cEmc = modTrans.transFrom(r0_mod);
centerVecEmc[iSec].SetXYZ(cEmc.getX(), cEmc.getY(), cEmc.getZ()) ;
}
if (fTofGeometry) {
for(Int_t iTofMod = 0; iTofMod < 8; iTofMod++) {
HModGeomPar *module = fTofGeometry->getModule(iSec,iTofMod);
if(module) {
HGeomTransform modTrans(module->getLabTransform());
modTrans.transTo(labSecTrans[iSec]);
modSecTransTof[iSec][iTofMod] = modTrans;
HGeomVector r0_mod(0.0, 0.0, 0.0);
HGeomVector rz_mod(0.0, 0.0, 1.0);
HGeomVector nTof = modTrans.transFrom(rz_mod) - modTrans.transFrom(r0_mod);
normVecTof[iSec][iTofMod].SetXYZ(nTof.getX(), nTof.getY(), nTof.getZ());
HGeomVector cTof = modTrans.transFrom(r0_mod);
centerVecTof[iSec][iTofMod].SetXYZ(cTof.getX(), cTof.getY(), cTof.getZ());
}
}
}
}
return kTRUE;
}
const HRpcCluster* HParticleMetaMatcher::recalcRpc(HParticleCand* cand)
{
if(!cand) return 0;
if(cand->getOuterSegInd() == -1) return 0;
if(!cand->isRpcClstUsed()) return 0;
if(fDebug){ cout <<"matchRpc--------------------------------"<<endl;}
Int_t sec = cand->getSector();
Int_t mod0 = cand->getMetaModule(0);
Int_t mod1 = cand->getMetaModule(1);
Int_t cell0 = cand->getMetaCell(0);
Int_t cell1 = cand->getMetaCell(1);
if(mod0 == -1) return 0;
Short_t type = 0;
if(mod0 > -1) type = 1;
if(mod1 > -1) type = 2;
Float_t dx = cand->getRkMetaDx();
Float_t dy = cand->getRkMetaDy();
if(fDebug){
HRpcCluster* pRpc = 0 ;
if(fCatRpcCluster) {
pRpc = (HRpcCluster*) fCatRpcCluster ->getObject(cand->getRpcInd());
}
if(pRpc){
Float_t x,y,z;
pRpc->getXYZLab(x,y,z);
cout<<"rpc sec "<<pRpc->getSector()<<" col "<<pRpc->getColumn1()<<" cell "<<setw(2)<<pRpc->getCell1()<<" type "<<type
<<" ,pos mod "<<setw(10)<<pRpc->getXMod()
<<" "<<setw(10)<<pRpc->getYMod()
<<" "<<setw(10)<<pRpc->getZMod()
<<" ,pos sec "<<setw(10)<<pRpc->getXSec()
<<" "<<setw(10)<<pRpc->getYSec()
<<" "<<setw(10)<<pRpc->getZSec()
<<" ,pos lab "<<setw(10)<<x
<<" "<<setw(10)<<y
<<" "<<setw(10)<<z
<<" ,theta "<<setw(10)<<pRpc->getTheta()
<<" phi "<<setw(10)<<pRpc->getPhi()
<<" dx "<<dx
<<" dy "<<dy
<<" type "<<pRpc->getClusterType()
<<endl;
}
}
TVector3 metaHit;
Int_t ind = mod0%2;
if(mod1 > -1) ind = 2;
traceToMeta(cand,metaHit,centerVecRpc[sec][ind],normVecRpc[sec][ind]);
HGeomVector vsec(metaHit.X(),metaHit.Y(),metaHit.Z());
trackMetaSec = vsec;
HGeomTransform& TransSec = pSpecGeomPar->getSector(sec)->getTransform();
HGeomVector vlab = TransSec.transFrom(vsec);
trackMetaLab = vlab;
HGeomTransform& modToLab = fRpcGeometry->getModule(sec,0)->getLabTransform();
HGeomVector vmod = modToLab.transTo(vlab);
trackMetaMod = vmod;
vmod.setX(vmod.X()+dx);
vmod.setY(vmod.Y()+dy);
vlab = modToLab.transFrom(vmod);
vsec = TransSec.transTo(vlab);
Double_t theta = TMath::RadToDeg() * TMath::ATan2(TMath::Sqrt(vlab.X()*vlab.X()+vlab.Y()*vlab.Y()),vlab.Z());
Double_t phi = TMath::RadToDeg() * TMath::ATan2(vlab.Y(),vlab.X());
if (phi < 0.) phi += 360.;
if(fDebug){
cout<<"mdc sec "<<sec<<" col "<<mod0<<" cell "<<setw(2)<<cell0<<" type "<<type
<<" ,pos mod "<<setw(10)<<vmod.X()
<<" "<<setw(10)<<vmod.Y()
<<" "<<setw(10)<<vmod.Z()
<<" ,pos sec "<<setw(10)<<vsec.X()
<<" "<<setw(10)<<vsec.Y()
<<" "<<setw(10)<<vsec.Z()
<<" ,pos lab "<<setw(10)<<vlab.X()
<<" "<<setw(10)<<vlab.Y()
<<" "<<setw(10)<<vlab.Z()
<<" ,theta "<<setw(10)<<theta
<<" phi "<<setw(10)<<phi
<<" type "<<type
<<endl;
}
rpccluster.setDetID1(sec,mod0,cell0);
rpccluster.setDetID2(sec,mod1,cell1);
rpccluster.setTheta(theta);
rpccluster.setPhi(phi);
rpccluster.setXYZLab(vlab.X(),vlab.Y(),vlab.Z());
rpccluster.setRSEC(vsec.X(),vsec.Y(),vsec.Z());
rpccluster.setCluster(cand->getTof(),1.,vmod.X(),vmod.Y(),vmod.Z());
rpccluster.setClusterType(type);
return &rpccluster;
}
const HTofCluster* HParticleMetaMatcher::recalcTof(HParticleCand* cand)
{
if(!cand) return 0;
if(cand->getOuterSegInd() == -1) return 0;
if(! (cand->isTofClstUsed() || cand->isTofHitUsed()) ) return 0;
if(fDebug){ cout <<"matchTof--------------------------------"<<endl;}
Int_t sec = cand->getSector();
Int_t mod0 = cand->getMetaModule(0);
Int_t mod1 = cand->getMetaModule(1);
Int_t cell0 = cand->getMetaCell(0);
if(mod0 == -1) return 0;
Short_t type = 0;
if(mod0 > -1) type = 1;
if(mod1 > -1) type = 2;
Float_t dx = cand->getRkMetaDx();
Float_t dy = cand->getRkMetaDy();
if(fDebug){
HTofCluster* pTof = 0 ;
if(cand->isTofClstUsed() && fCatTofCluster) {
pTof = (HTofCluster*) fCatTofCluster ->getObject(cand->getTofClstInd());
}
if(cand->isTofHitUsed() && fCatTofHit) {
pTof = (HTofCluster*) fCatTofHit ->getObject(cand->getTofHitInd());
}
if(pTof){
Float_t x,y,z;
Float_t ph,th;
pTof->getTheta(th);
pTof->getPhi(ph);
pTof->getXYZLab(x,y,z);
cout<<"tof sec "<<(Int_t)pTof->getSector()<<" mod "<<(Int_t)pTof->getModule()<<" cell "<<setw(2)<<(Int_t)pTof->getCell()<<" type "<<type
<<" ,pos mod "<<setw(10)<<pTof->getXpos()
<<" ,pos lab "<<setw(10)<<x
<<" "<<setw(10)<<y
<<" "<<setw(10)<<z
<<" ,theta "<<setw(10)<<th
<<" phi "<<setw(10)<<ph
<<" dx "<<dx
<<" dy "<<dy
<<endl;
}
}
TVector3 metaHit;
traceToMeta(cand,metaHit,centerVecTof[sec][mod0],normVecTof[sec][mod0]);
HGeomVector vsec(metaHit.X(),metaHit.Y(),metaHit.Z());
trackMetaSec = vsec;
HGeomTransform& TransSec = pSpecGeomPar->getSector(sec)->getTransform();
HGeomVector vlab = TransSec.transFrom(vsec);
trackMetaLab = vlab;
HGeomTransform& modToLab = fTofGeometry->getModule(sec,mod0)->getLabTransform();
HGeomVector vmod = modToLab.transTo(vlab);
trackMetaMod = vmod;
vmod.setX(vmod.X()+dx);
vmod.setY(vmod.Y()+dy);
vlab = modToLab.transFrom(vmod);
vsec = TransSec.transTo(vlab);
Double_t theta = TMath::RadToDeg() * TMath::ATan2(TMath::Sqrt(vlab.X()*vlab.X()+vlab.Y()*vlab.Y()),vlab.Z());
Double_t phi = TMath::RadToDeg() * TMath::ATan2(vlab.Y(),vlab.X());
if (phi < 0.) phi += 360.;
if(fDebug){
cout<<"mdc sec "<<sec<<" mod "<<mod0<<" cell "<<setw(2)<<cell0<<" type "<<type
<<" ,pos mod "<<setw(10)<<vmod.X()
<<" ,pos lab "<<setw(10)<<vlab.X()
<<" "<<setw(10)<<vlab.Y()
<<" "<<setw(10)<<vlab.Z()
<<" ,theta "<<setw(10)<<theta
<<" phi "<<setw(10)<<phi
<<endl;
}
tofcluster.setSector(sec);
tofcluster.setModule(mod0);
tofcluster.setCell(cell0);
tofcluster.setTheta(theta);
tofcluster.setPhi(phi);
tofcluster.setXYZLab(vlab.X(),vlab.Y(),vlab.Z());
tofcluster.setXpos(vmod.X());
tofcluster.setTof(cand->getTof());
tofcluster.setEdep(cand->getTofdEdx());
tofcluster.setClusterSize(type);
return &tofcluster;
}
const HEmcCluster* HParticleMetaMatcher::recalcEmc(HParticleCand* cand)
{
if(!cand) return 0;
if(cand->getOuterSegInd() == -1) return 0;
if(cand->getEmcInd() == -1) return 0;
if(fDebug){ cout <<"matchEmc--------------------------------"<<endl;}
Int_t sec = cand->getSector();
Short_t type = 0;
Float_t dx = cand->getRkMetaDxEmc();
Float_t dy = cand->getRkMetaDyEmc();
if(fDebug){
HEmcCluster* pEmc = 0 ;
if(cand->getEmcInd() > -1 && fCatEmcCluster) {
pEmc = (HEmcCluster*) fCatEmcCluster ->getObject(cand->getEmcInd());
}
if(pEmc){
Float_t x,y,z;
pEmc->getXYZLab(x,y,z);
cout<<"emc sec "<<(Int_t)pEmc->getSector()<<" cell "<<setw(3)<<(Int_t)pEmc->getCell()<<" type "<<(Int_t)pEmc->getNCells()
<<" ,pos mod "<<setw(10)<<pEmc->getXMod()
<<" "<<setw(10)<<pEmc->getYMod()
<<" ,pos lab "<<setw(10)<<x
<<" "<<setw(10)<<y
<<" "<<setw(10)<<z
<<" ,theta "<<setw(10)<<pEmc->getTheta()
<<" phi "<<setw(10)<<pEmc->getPhi()
<<" dx "<<dx
<<" dy "<<dy
<<endl;
}
}
TVector3 metaHit;
traceToMeta(cand,metaHit,centerVecEmc[sec],normVecEmc[sec]);
HGeomVector vsec(metaHit.X(),metaHit.Y(),metaHit.Z());
trackMetaSec = vsec;
HGeomTransform& TransSec = pSpecGeomPar->getSector(sec)->getTransform();
HGeomVector vlab = TransSec.transFrom(vsec);
trackMetaLab = vlab;
HGeomTransform& modToLab = fEmcGeometry->getModule(sec,0)->getLabTransform();
HGeomVector vmod = modToLab.transTo(vlab);
trackMetaMod = vmod;
vmod.setX(vmod.X()+dx);
vmod.setY(vmod.Y()+dy);
vlab = modToLab.transFrom(vmod);
vsec = TransSec.transTo(vlab);
Double_t theta = TMath::RadToDeg() * TMath::ATan2(TMath::Sqrt(vlab.X()*vlab.X()+vlab.Y()*vlab.Y()),vlab.Z());
Double_t phi = TMath::RadToDeg() * TMath::ATan2(vlab.Y(),vlab.X());
if (phi < 0.) phi += 360.;
if(fDebug){
cout<<"mdc sec "<<sec<<" cell "<<setw(3)<<0<<" type "<<type
<<" ,pos mod "<<setw(10)<<vmod.X()
<<" "<<setw(10)<<vmod.Y()
<<" ,pos lab "<<setw(10)<<vlab.X()
<<" "<<setw(10)<<vlab.Y()
<<" "<<setw(10)<<vlab.Z()
<<" ,theta "<<setw(10)<<theta
<<" phi "<<setw(10)<<phi
<<endl;
}
emccluster.setSector(sec);
emccluster.setTheta(theta);
emccluster.setPhi(phi);
emccluster.setXYZLab(vlab.X(),vlab.Y(),vlab.Z());
emccluster.setXYMod(vmod.X(),vmod.Y());
emccluster.setTime(cand->getEmcTime());
emccluster.setEnergy(cand->getEmcEnergy());
return &emccluster;
}
Bool_t HParticleMetaMatcher::predictRpcCell(HParticleCand* cand,HGeomVector& hit0,HGeomVector& hit1,Int_t& s,Int_t& col0,Int_t& cell0,Int_t& col1,Int_t& cell1)
{
if(!cand) return 0;
if(cand->getOuterSegInd() == -1) return 0;
if(fDebug){ cout <<"predictRpcCell--------------------------------"<<endl;}
Int_t sec = cand->getSector();
if(fDebug && cand->getRpcInd() != -1){
Int_t mod0 = cand->getMetaModule(0);
Int_t mod1 = cand->getMetaModule(1);
Int_t c0 = cand->getMetaCell(0);
Int_t c1 = cand->getMetaCell(1);
if(mod0 == -1) return 0;
Short_t type = 0;
if(mod0 > -1) type = 1;
if(mod1 > -1) type = 2;
HRpcCluster* pRpc = 0 ;
if(fCatRpcCluster) {
pRpc = (HRpcCluster*) fCatRpcCluster ->getObject(cand->getRpcInd());
}
if(pRpc){
cout<<"rpc sec "<<pRpc->getSector()
<<" col0 "<<mod0<<" cell0 "<<setw(2)<<c0
<<" col1 "<<mod1<<" cell1 "<<setw(2)<<c1
<<" type "<<type
<<" ,pos mod "<<setw(10)<<pRpc->getXMod()
<<" "<<setw(10)<<pRpc->getYMod()
<<" "<<setw(10)<<pRpc->getZMod()
<<endl;
}
}
TVector3 metaHit;
HGeomVector vmod[2];
HGeomTransform& TransSec = pSpecGeomPar->getSector(sec)->getTransform();
HGeomTransform& modToLab = fRpcGeometry->getModule(sec,0)->getLabTransform();
for(Int_t i = 0; i < 2; i++){
traceToMeta(cand,metaHit,centerVecRpc[sec][i],normVecRpc[sec][i]);
HGeomVector vsec(metaHit.X(),metaHit.Y(),metaHit.Z());
HGeomVector vlab = TransSec.transFrom(vsec);
vmod[i] = modToLab.transTo(vlab);
}
hit0 = vmod[0];
hit1 = vmod[1];
s = sec;
col0 = col1 = -1;
cell0= cell1= -1;
Int_t ct = 0;
for(Int_t col = 0; col < 6; col++){
for(Int_t c = 0; c < RPCMAXCELL; c++){
HGeomVector v = vmod[col%2];
if(!isInRpcCell(v,sec,col,c)) continue;
if (ct == 0) { col0 = col; cell0 = c;}
else if(ct == 1) { col1 = col; cell1 = c;}
else {
cout <<"predictRpcCell() : more than 2 Rpc cells found!"<<endl;
}
ct++;
}
}
return ct > 0 ? kTRUE : kFALSE;
}
Bool_t HParticleMetaMatcher::predictTofCell(HParticleCand* cand,HGeomVector& hit0,HGeomVector& hit1,Int_t& s,Int_t& mod0,Int_t& cell0,Int_t& mod1,Int_t& cell1)
{
if(!cand) return 0;
if(cand->getOuterSegInd() == -1) return 0;
if(fDebug){ cout <<"predictTofCell--------------------------------"<<endl;}
Int_t sec = cand->getSector();
if(fDebug){
HTofCluster* pTof = 0 ;
if(cand->getTofClstInd() != -1 && fCatTofCluster) {
pTof = (HTofCluster*) fCatTofCluster ->getObject(cand->getTofClstInd());
}
if(cand->getTofHitInd() != -1 && fCatTofHit) {
pTof = (HTofCluster*) fCatTofHit ->getObject(cand->getTofHitInd());
}
if(pTof){
Int_t mod0 = cand->getMetaModule(0);
Int_t mod1 = cand->getMetaModule(1);
Int_t c0 = cand->getMetaCell(0);
Int_t c1 = cand->getMetaCell(1);
Short_t type = 0;
if(mod0 > -1) type = 1;
if(mod1 > -1) type = 2;
cout<<"tof sec "<<(Int_t)pTof->getSector()
<<" mod0 "<<mod0<<" cell0 "<<setw(2)<<c0
<<" mod1 "<<mod1<<" cell1 "<<setw(2)<<c1
<<" type "<<type
<<" ,pos mod "<<setw(10)<<pTof->getXpos()
<<endl;
}
}
TVector3 metaHit;
HGeomVector vmod[8];
HGeomTransform& TransSec = pSpecGeomPar->getSector(sec)->getTransform();
for(Int_t i = 0; i < 8; i++){
HGeomTransform& modToLab=fTofGeometry->getModule(sec,i)->getLabTransform();
traceToMeta(cand,metaHit,centerVecTof[sec][i],normVecTof[sec][i]);
HGeomVector vsec(metaHit.X(),metaHit.Y(),metaHit.Z());
HGeomVector vlab = TransSec.transFrom(vsec);
vmod[i] = modToLab.transTo(vlab);
}
s = sec;
mod0 = mod1 = -1;
cell0 = cell1= -1;
hit0.setXYZ(0,0,0);
hit1.setXYZ(0,0,0);
Int_t ct = 0;
for(Int_t m = 0; m < 8; m++){
for(Int_t c = 0; c < 8; c++){
if(!isInTofCell(vmod[m],sec,m,c)) continue;
if (ct == 0) { mod0 = m; cell0 = c; hit0 = vmod[m];}
else if(ct == 1) { mod1 = m; cell1 = c; hit1 = vmod[m];}
else {
cout <<"predictTofCell() : more than 2 Tof rods found!"<<endl;
}
ct++;
}
}
return ct > 0 ? kTRUE : kFALSE;
}
Bool_t HParticleMetaMatcher::predictEmcCell(HParticleCand* cand,HGeomVector& hit,Int_t& s,Int_t& pos,Int_t& cell)
{
if(!cand) return 0;
if(cand->getOuterSegInd() == -1) return 0;
if(fDebug){ cout <<"predictEmcCell--------------------------------"<<endl;}
Int_t sec = cand->getSector();
if(fDebug && cand->getEmcInd() != -1){
HEmcCluster* pEmc = 0 ;
if(fCatEmcCluster) {
pEmc = (HEmcCluster*) fCatEmcCluster ->getObject(cand->getEmcInd());
}
if(pEmc){
cout<<"emc sec "<<(Int_t)pEmc->getSector()<<" cell "<<setw(3)<<(Int_t)pEmc->getCell()<<" pos "<<setw(3)<<HEmcDetector::getPositionFromCell(pEmc->getCell())<<" type "<<(Int_t)pEmc->getNCells()
<<" ,pos mod "<<setw(10)<<pEmc->getXMod()
<<" "<<setw(10)<<pEmc->getYMod()
<<" radius "<<cand->getMetaMatchRadiusEmc()
<<endl;
}
}
TVector3 metaHit;
HGeomVector vmod;
HGeomTransform& TransSec = pSpecGeomPar->getSector(sec)->getTransform();
HGeomTransform& modToLab = fRpcGeometry->getModule(sec,0)->getLabTransform();
traceToMeta(cand,metaHit,centerVecEmc[sec],normVecEmc[sec]);
HGeomVector vsec(metaHit.X(),metaHit.Y(),metaHit.Z());
HGeomVector vlab = TransSec.transFrom(vsec);
vmod = modToLab.transTo(vlab);
hit = vmod;
s = sec;
pos = -1;
cell = -1;
for(Int_t c = 0; c < EMCMAXCELL; c++){
if(!isInEmcCell(vmod,sec,c)) continue;
pos = c;
cell = HEmcDetector::getCellFromPosition(pos);
break;
}
return pos > -1 ? kTRUE : kFALSE;
}
hparticlemetamatcher.cc:1 hparticlemetamatcher.cc:2 hparticlemetamatcher.cc:3 hparticlemetamatcher.cc:4 hparticlemetamatcher.cc:5 hparticlemetamatcher.cc:6 hparticlemetamatcher.cc:7 hparticlemetamatcher.cc:8 hparticlemetamatcher.cc:9 hparticlemetamatcher.cc:10 hparticlemetamatcher.cc:11 hparticlemetamatcher.cc:12 hparticlemetamatcher.cc:13 hparticlemetamatcher.cc:14 hparticlemetamatcher.cc:15 hparticlemetamatcher.cc:16 hparticlemetamatcher.cc:17 hparticlemetamatcher.cc:18 hparticlemetamatcher.cc:19 hparticlemetamatcher.cc:20 hparticlemetamatcher.cc:21 hparticlemetamatcher.cc:22 hparticlemetamatcher.cc:23 hparticlemetamatcher.cc:24 hparticlemetamatcher.cc:25 hparticlemetamatcher.cc:26 hparticlemetamatcher.cc:27 hparticlemetamatcher.cc:28 hparticlemetamatcher.cc:29 hparticlemetamatcher.cc:30 hparticlemetamatcher.cc:31 hparticlemetamatcher.cc:32 hparticlemetamatcher.cc:33 hparticlemetamatcher.cc:34 hparticlemetamatcher.cc:35 hparticlemetamatcher.cc:36 hparticlemetamatcher.cc:37 hparticlemetamatcher.cc:38 hparticlemetamatcher.cc:39 hparticlemetamatcher.cc:40 hparticlemetamatcher.cc:41 hparticlemetamatcher.cc:42 hparticlemetamatcher.cc:43 hparticlemetamatcher.cc:44 hparticlemetamatcher.cc:45 hparticlemetamatcher.cc:46 hparticlemetamatcher.cc:47 hparticlemetamatcher.cc:48 hparticlemetamatcher.cc:49 hparticlemetamatcher.cc:50 hparticlemetamatcher.cc:51 hparticlemetamatcher.cc:52 hparticlemetamatcher.cc:53 hparticlemetamatcher.cc:54 hparticlemetamatcher.cc:55 hparticlemetamatcher.cc:56 hparticlemetamatcher.cc:57 hparticlemetamatcher.cc:58 hparticlemetamatcher.cc:59 hparticlemetamatcher.cc:60 hparticlemetamatcher.cc:61 hparticlemetamatcher.cc:62 hparticlemetamatcher.cc:63 hparticlemetamatcher.cc:64 hparticlemetamatcher.cc:65 hparticlemetamatcher.cc:66 hparticlemetamatcher.cc:67 hparticlemetamatcher.cc:68 hparticlemetamatcher.cc:69 hparticlemetamatcher.cc:70 hparticlemetamatcher.cc:71 hparticlemetamatcher.cc:72 hparticlemetamatcher.cc:73 hparticlemetamatcher.cc:74 hparticlemetamatcher.cc:75 hparticlemetamatcher.cc:76 hparticlemetamatcher.cc:77 hparticlemetamatcher.cc:78 hparticlemetamatcher.cc:79 hparticlemetamatcher.cc:80 hparticlemetamatcher.cc:81 hparticlemetamatcher.cc:82 hparticlemetamatcher.cc:83 hparticlemetamatcher.cc:84 hparticlemetamatcher.cc:85 hparticlemetamatcher.cc:86 hparticlemetamatcher.cc:87 hparticlemetamatcher.cc:88 hparticlemetamatcher.cc:89 hparticlemetamatcher.cc:90 hparticlemetamatcher.cc:91 hparticlemetamatcher.cc:92 hparticlemetamatcher.cc:93 hparticlemetamatcher.cc:94 hparticlemetamatcher.cc:95 hparticlemetamatcher.cc:96 hparticlemetamatcher.cc:97 hparticlemetamatcher.cc:98 hparticlemetamatcher.cc:99 hparticlemetamatcher.cc:100 hparticlemetamatcher.cc:101 hparticlemetamatcher.cc:102 hparticlemetamatcher.cc:103 hparticlemetamatcher.cc:104 hparticlemetamatcher.cc:105 hparticlemetamatcher.cc:106 hparticlemetamatcher.cc:107 hparticlemetamatcher.cc:108 hparticlemetamatcher.cc:109 hparticlemetamatcher.cc:110 hparticlemetamatcher.cc:111 hparticlemetamatcher.cc:112 hparticlemetamatcher.cc:113 hparticlemetamatcher.cc:114 hparticlemetamatcher.cc:115 hparticlemetamatcher.cc:116 hparticlemetamatcher.cc:117 hparticlemetamatcher.cc:118 hparticlemetamatcher.cc:119 hparticlemetamatcher.cc:120 hparticlemetamatcher.cc:121 hparticlemetamatcher.cc:122 hparticlemetamatcher.cc:123 hparticlemetamatcher.cc:124 hparticlemetamatcher.cc:125 hparticlemetamatcher.cc:126 hparticlemetamatcher.cc:127 hparticlemetamatcher.cc:128 hparticlemetamatcher.cc:129 hparticlemetamatcher.cc:130 hparticlemetamatcher.cc:131 hparticlemetamatcher.cc:132 hparticlemetamatcher.cc:133 hparticlemetamatcher.cc:134 hparticlemetamatcher.cc:135 hparticlemetamatcher.cc:136 hparticlemetamatcher.cc:137 hparticlemetamatcher.cc:138 hparticlemetamatcher.cc:139 hparticlemetamatcher.cc:140 hparticlemetamatcher.cc:141 hparticlemetamatcher.cc:142 hparticlemetamatcher.cc:143 hparticlemetamatcher.cc:144 hparticlemetamatcher.cc:145 hparticlemetamatcher.cc:146 hparticlemetamatcher.cc:147 hparticlemetamatcher.cc:148 hparticlemetamatcher.cc:149 hparticlemetamatcher.cc:150 hparticlemetamatcher.cc:151 hparticlemetamatcher.cc:152 hparticlemetamatcher.cc:153 hparticlemetamatcher.cc:154 hparticlemetamatcher.cc:155 hparticlemetamatcher.cc:156 hparticlemetamatcher.cc:157 hparticlemetamatcher.cc:158 hparticlemetamatcher.cc:159 hparticlemetamatcher.cc:160 hparticlemetamatcher.cc:161 hparticlemetamatcher.cc:162 hparticlemetamatcher.cc:163 hparticlemetamatcher.cc:164 hparticlemetamatcher.cc:165 hparticlemetamatcher.cc:166 hparticlemetamatcher.cc:167 hparticlemetamatcher.cc:168 hparticlemetamatcher.cc:169 hparticlemetamatcher.cc:170 hparticlemetamatcher.cc:171 hparticlemetamatcher.cc:172 hparticlemetamatcher.cc:173 hparticlemetamatcher.cc:174 hparticlemetamatcher.cc:175 hparticlemetamatcher.cc:176 hparticlemetamatcher.cc:177 hparticlemetamatcher.cc:178 hparticlemetamatcher.cc:179 hparticlemetamatcher.cc:180 hparticlemetamatcher.cc:181 hparticlemetamatcher.cc:182 hparticlemetamatcher.cc:183 hparticlemetamatcher.cc:184 hparticlemetamatcher.cc:185 hparticlemetamatcher.cc:186 hparticlemetamatcher.cc:187 hparticlemetamatcher.cc:188 hparticlemetamatcher.cc:189 hparticlemetamatcher.cc:190 hparticlemetamatcher.cc:191 hparticlemetamatcher.cc:192 hparticlemetamatcher.cc:193 hparticlemetamatcher.cc:194 hparticlemetamatcher.cc:195 hparticlemetamatcher.cc:196 hparticlemetamatcher.cc:197 hparticlemetamatcher.cc:198 hparticlemetamatcher.cc:199 hparticlemetamatcher.cc:200 hparticlemetamatcher.cc:201 hparticlemetamatcher.cc:202 hparticlemetamatcher.cc:203 hparticlemetamatcher.cc:204 hparticlemetamatcher.cc:205 hparticlemetamatcher.cc:206 hparticlemetamatcher.cc:207 hparticlemetamatcher.cc:208 hparticlemetamatcher.cc:209 hparticlemetamatcher.cc:210 hparticlemetamatcher.cc:211 hparticlemetamatcher.cc:212 hparticlemetamatcher.cc:213 hparticlemetamatcher.cc:214 hparticlemetamatcher.cc:215 hparticlemetamatcher.cc:216 hparticlemetamatcher.cc:217 hparticlemetamatcher.cc:218 hparticlemetamatcher.cc:219 hparticlemetamatcher.cc:220 hparticlemetamatcher.cc:221 hparticlemetamatcher.cc:222 hparticlemetamatcher.cc:223 hparticlemetamatcher.cc:224 hparticlemetamatcher.cc:225 hparticlemetamatcher.cc:226 hparticlemetamatcher.cc:227 hparticlemetamatcher.cc:228 hparticlemetamatcher.cc:229 hparticlemetamatcher.cc:230 hparticlemetamatcher.cc:231 hparticlemetamatcher.cc:232 hparticlemetamatcher.cc:233 hparticlemetamatcher.cc:234 hparticlemetamatcher.cc:235 hparticlemetamatcher.cc:236 hparticlemetamatcher.cc:237 hparticlemetamatcher.cc:238 hparticlemetamatcher.cc:239 hparticlemetamatcher.cc:240 hparticlemetamatcher.cc:241 hparticlemetamatcher.cc:242 hparticlemetamatcher.cc:243 hparticlemetamatcher.cc:244 hparticlemetamatcher.cc:245 hparticlemetamatcher.cc:246 hparticlemetamatcher.cc:247 hparticlemetamatcher.cc:248 hparticlemetamatcher.cc:249 hparticlemetamatcher.cc:250 hparticlemetamatcher.cc:251 hparticlemetamatcher.cc:252 hparticlemetamatcher.cc:253 hparticlemetamatcher.cc:254 hparticlemetamatcher.cc:255 hparticlemetamatcher.cc:256 hparticlemetamatcher.cc:257 hparticlemetamatcher.cc:258 hparticlemetamatcher.cc:259 hparticlemetamatcher.cc:260 hparticlemetamatcher.cc:261 hparticlemetamatcher.cc:262 hparticlemetamatcher.cc:263 hparticlemetamatcher.cc:264 hparticlemetamatcher.cc:265 hparticlemetamatcher.cc:266 hparticlemetamatcher.cc:267 hparticlemetamatcher.cc:268 hparticlemetamatcher.cc:269 hparticlemetamatcher.cc:270 hparticlemetamatcher.cc:271 hparticlemetamatcher.cc:272 hparticlemetamatcher.cc:273 hparticlemetamatcher.cc:274 hparticlemetamatcher.cc:275 hparticlemetamatcher.cc:276 hparticlemetamatcher.cc:277 hparticlemetamatcher.cc:278 hparticlemetamatcher.cc:279 hparticlemetamatcher.cc:280 hparticlemetamatcher.cc:281 hparticlemetamatcher.cc:282 hparticlemetamatcher.cc:283 hparticlemetamatcher.cc:284 hparticlemetamatcher.cc:285 hparticlemetamatcher.cc:286 hparticlemetamatcher.cc:287 hparticlemetamatcher.cc:288 hparticlemetamatcher.cc:289 hparticlemetamatcher.cc:290 hparticlemetamatcher.cc:291 hparticlemetamatcher.cc:292 hparticlemetamatcher.cc:293 hparticlemetamatcher.cc:294 hparticlemetamatcher.cc:295 hparticlemetamatcher.cc:296 hparticlemetamatcher.cc:297 hparticlemetamatcher.cc:298 hparticlemetamatcher.cc:299 hparticlemetamatcher.cc:300 hparticlemetamatcher.cc:301 hparticlemetamatcher.cc:302 hparticlemetamatcher.cc:303 hparticlemetamatcher.cc:304 hparticlemetamatcher.cc:305 hparticlemetamatcher.cc:306 hparticlemetamatcher.cc:307 hparticlemetamatcher.cc:308 hparticlemetamatcher.cc:309 hparticlemetamatcher.cc:310 hparticlemetamatcher.cc:311 hparticlemetamatcher.cc:312 hparticlemetamatcher.cc:313 hparticlemetamatcher.cc:314 hparticlemetamatcher.cc:315 hparticlemetamatcher.cc:316 hparticlemetamatcher.cc:317 hparticlemetamatcher.cc:318 hparticlemetamatcher.cc:319 hparticlemetamatcher.cc:320 hparticlemetamatcher.cc:321 hparticlemetamatcher.cc:322 hparticlemetamatcher.cc:323 hparticlemetamatcher.cc:324 hparticlemetamatcher.cc:325 hparticlemetamatcher.cc:326 hparticlemetamatcher.cc:327 hparticlemetamatcher.cc:328 hparticlemetamatcher.cc:329 hparticlemetamatcher.cc:330 hparticlemetamatcher.cc:331 hparticlemetamatcher.cc:332 hparticlemetamatcher.cc:333 hparticlemetamatcher.cc:334 hparticlemetamatcher.cc:335 hparticlemetamatcher.cc:336 hparticlemetamatcher.cc:337 hparticlemetamatcher.cc:338 hparticlemetamatcher.cc:339 hparticlemetamatcher.cc:340 hparticlemetamatcher.cc:341 hparticlemetamatcher.cc:342 hparticlemetamatcher.cc:343 hparticlemetamatcher.cc:344 hparticlemetamatcher.cc:345 hparticlemetamatcher.cc:346 hparticlemetamatcher.cc:347 hparticlemetamatcher.cc:348 hparticlemetamatcher.cc:349 hparticlemetamatcher.cc:350 hparticlemetamatcher.cc:351 hparticlemetamatcher.cc:352 hparticlemetamatcher.cc:353 hparticlemetamatcher.cc:354 hparticlemetamatcher.cc:355 hparticlemetamatcher.cc:356 hparticlemetamatcher.cc:357 hparticlemetamatcher.cc:358 hparticlemetamatcher.cc:359 hparticlemetamatcher.cc:360 hparticlemetamatcher.cc:361 hparticlemetamatcher.cc:362 hparticlemetamatcher.cc:363 hparticlemetamatcher.cc:364 hparticlemetamatcher.cc:365 hparticlemetamatcher.cc:366 hparticlemetamatcher.cc:367 hparticlemetamatcher.cc:368 hparticlemetamatcher.cc:369 hparticlemetamatcher.cc:370 hparticlemetamatcher.cc:371 hparticlemetamatcher.cc:372 hparticlemetamatcher.cc:373 hparticlemetamatcher.cc:374 hparticlemetamatcher.cc:375 hparticlemetamatcher.cc:376 hparticlemetamatcher.cc:377 hparticlemetamatcher.cc:378 hparticlemetamatcher.cc:379 hparticlemetamatcher.cc:380 hparticlemetamatcher.cc:381 hparticlemetamatcher.cc:382 hparticlemetamatcher.cc:383 hparticlemetamatcher.cc:384 hparticlemetamatcher.cc:385 hparticlemetamatcher.cc:386 hparticlemetamatcher.cc:387 hparticlemetamatcher.cc:388 hparticlemetamatcher.cc:389 hparticlemetamatcher.cc:390 hparticlemetamatcher.cc:391 hparticlemetamatcher.cc:392 hparticlemetamatcher.cc:393 hparticlemetamatcher.cc:394 hparticlemetamatcher.cc:395 hparticlemetamatcher.cc:396 hparticlemetamatcher.cc:397 hparticlemetamatcher.cc:398 hparticlemetamatcher.cc:399 hparticlemetamatcher.cc:400 hparticlemetamatcher.cc:401 hparticlemetamatcher.cc:402 hparticlemetamatcher.cc:403 hparticlemetamatcher.cc:404 hparticlemetamatcher.cc:405 hparticlemetamatcher.cc:406 hparticlemetamatcher.cc:407 hparticlemetamatcher.cc:408 hparticlemetamatcher.cc:409 hparticlemetamatcher.cc:410 hparticlemetamatcher.cc:411 hparticlemetamatcher.cc:412 hparticlemetamatcher.cc:413 hparticlemetamatcher.cc:414 hparticlemetamatcher.cc:415 hparticlemetamatcher.cc:416 hparticlemetamatcher.cc:417 hparticlemetamatcher.cc:418 hparticlemetamatcher.cc:419 hparticlemetamatcher.cc:420 hparticlemetamatcher.cc:421 hparticlemetamatcher.cc:422 hparticlemetamatcher.cc:423 hparticlemetamatcher.cc:424 hparticlemetamatcher.cc:425 hparticlemetamatcher.cc:426 hparticlemetamatcher.cc:427 hparticlemetamatcher.cc:428 hparticlemetamatcher.cc:429 hparticlemetamatcher.cc:430 hparticlemetamatcher.cc:431 hparticlemetamatcher.cc:432 hparticlemetamatcher.cc:433 hparticlemetamatcher.cc:434 hparticlemetamatcher.cc:435 hparticlemetamatcher.cc:436 hparticlemetamatcher.cc:437 hparticlemetamatcher.cc:438 hparticlemetamatcher.cc:439 hparticlemetamatcher.cc:440 hparticlemetamatcher.cc:441 hparticlemetamatcher.cc:442 hparticlemetamatcher.cc:443 hparticlemetamatcher.cc:444 hparticlemetamatcher.cc:445 hparticlemetamatcher.cc:446 hparticlemetamatcher.cc:447 hparticlemetamatcher.cc:448 hparticlemetamatcher.cc:449 hparticlemetamatcher.cc:450 hparticlemetamatcher.cc:451 hparticlemetamatcher.cc:452 hparticlemetamatcher.cc:453 hparticlemetamatcher.cc:454 hparticlemetamatcher.cc:455 hparticlemetamatcher.cc:456 hparticlemetamatcher.cc:457 hparticlemetamatcher.cc:458 hparticlemetamatcher.cc:459 hparticlemetamatcher.cc:460 hparticlemetamatcher.cc:461 hparticlemetamatcher.cc:462 hparticlemetamatcher.cc:463 hparticlemetamatcher.cc:464 hparticlemetamatcher.cc:465 hparticlemetamatcher.cc:466 hparticlemetamatcher.cc:467 hparticlemetamatcher.cc:468 hparticlemetamatcher.cc:469 hparticlemetamatcher.cc:470 hparticlemetamatcher.cc:471 hparticlemetamatcher.cc:472 hparticlemetamatcher.cc:473 hparticlemetamatcher.cc:474 hparticlemetamatcher.cc:475 hparticlemetamatcher.cc:476 hparticlemetamatcher.cc:477 hparticlemetamatcher.cc:478 hparticlemetamatcher.cc:479 hparticlemetamatcher.cc:480 hparticlemetamatcher.cc:481 hparticlemetamatcher.cc:482 hparticlemetamatcher.cc:483 hparticlemetamatcher.cc:484 hparticlemetamatcher.cc:485 hparticlemetamatcher.cc:486 hparticlemetamatcher.cc:487 hparticlemetamatcher.cc:488 hparticlemetamatcher.cc:489 hparticlemetamatcher.cc:490 hparticlemetamatcher.cc:491 hparticlemetamatcher.cc:492 hparticlemetamatcher.cc:493 hparticlemetamatcher.cc:494 hparticlemetamatcher.cc:495 hparticlemetamatcher.cc:496 hparticlemetamatcher.cc:497 hparticlemetamatcher.cc:498 hparticlemetamatcher.cc:499 hparticlemetamatcher.cc:500 hparticlemetamatcher.cc:501 hparticlemetamatcher.cc:502 hparticlemetamatcher.cc:503 hparticlemetamatcher.cc:504 hparticlemetamatcher.cc:505 hparticlemetamatcher.cc:506 hparticlemetamatcher.cc:507 hparticlemetamatcher.cc:508 hparticlemetamatcher.cc:509 hparticlemetamatcher.cc:510 hparticlemetamatcher.cc:511 hparticlemetamatcher.cc:512 hparticlemetamatcher.cc:513 hparticlemetamatcher.cc:514 hparticlemetamatcher.cc:515 hparticlemetamatcher.cc:516 hparticlemetamatcher.cc:517 hparticlemetamatcher.cc:518 hparticlemetamatcher.cc:519 hparticlemetamatcher.cc:520 hparticlemetamatcher.cc:521 hparticlemetamatcher.cc:522 hparticlemetamatcher.cc:523 hparticlemetamatcher.cc:524 hparticlemetamatcher.cc:525 hparticlemetamatcher.cc:526 hparticlemetamatcher.cc:527 hparticlemetamatcher.cc:528 hparticlemetamatcher.cc:529 hparticlemetamatcher.cc:530 hparticlemetamatcher.cc:531 hparticlemetamatcher.cc:532 hparticlemetamatcher.cc:533 hparticlemetamatcher.cc:534 hparticlemetamatcher.cc:535 hparticlemetamatcher.cc:536 hparticlemetamatcher.cc:537 hparticlemetamatcher.cc:538 hparticlemetamatcher.cc:539 hparticlemetamatcher.cc:540 hparticlemetamatcher.cc:541 hparticlemetamatcher.cc:542 hparticlemetamatcher.cc:543 hparticlemetamatcher.cc:544 hparticlemetamatcher.cc:545 hparticlemetamatcher.cc:546 hparticlemetamatcher.cc:547 hparticlemetamatcher.cc:548 hparticlemetamatcher.cc:549 hparticlemetamatcher.cc:550 hparticlemetamatcher.cc:551 hparticlemetamatcher.cc:552 hparticlemetamatcher.cc:553 hparticlemetamatcher.cc:554 hparticlemetamatcher.cc:555 hparticlemetamatcher.cc:556 hparticlemetamatcher.cc:557 hparticlemetamatcher.cc:558 hparticlemetamatcher.cc:559 hparticlemetamatcher.cc:560 hparticlemetamatcher.cc:561 hparticlemetamatcher.cc:562 hparticlemetamatcher.cc:563 hparticlemetamatcher.cc:564 hparticlemetamatcher.cc:565 hparticlemetamatcher.cc:566 hparticlemetamatcher.cc:567 hparticlemetamatcher.cc:568 hparticlemetamatcher.cc:569 hparticlemetamatcher.cc:570 hparticlemetamatcher.cc:571 hparticlemetamatcher.cc:572 hparticlemetamatcher.cc:573 hparticlemetamatcher.cc:574 hparticlemetamatcher.cc:575 hparticlemetamatcher.cc:576 hparticlemetamatcher.cc:577 hparticlemetamatcher.cc:578 hparticlemetamatcher.cc:579 hparticlemetamatcher.cc:580 hparticlemetamatcher.cc:581 hparticlemetamatcher.cc:582 hparticlemetamatcher.cc:583 hparticlemetamatcher.cc:584 hparticlemetamatcher.cc:585 hparticlemetamatcher.cc:586 hparticlemetamatcher.cc:587 hparticlemetamatcher.cc:588 hparticlemetamatcher.cc:589 hparticlemetamatcher.cc:590 hparticlemetamatcher.cc:591 hparticlemetamatcher.cc:592 hparticlemetamatcher.cc:593 hparticlemetamatcher.cc:594 hparticlemetamatcher.cc:595 hparticlemetamatcher.cc:596 hparticlemetamatcher.cc:597 hparticlemetamatcher.cc:598 hparticlemetamatcher.cc:599 hparticlemetamatcher.cc:600 hparticlemetamatcher.cc:601 hparticlemetamatcher.cc:602 hparticlemetamatcher.cc:603 hparticlemetamatcher.cc:604 hparticlemetamatcher.cc:605 hparticlemetamatcher.cc:606 hparticlemetamatcher.cc:607 hparticlemetamatcher.cc:608 hparticlemetamatcher.cc:609 hparticlemetamatcher.cc:610 hparticlemetamatcher.cc:611 hparticlemetamatcher.cc:612 hparticlemetamatcher.cc:613 hparticlemetamatcher.cc:614 hparticlemetamatcher.cc:615 hparticlemetamatcher.cc:616 hparticlemetamatcher.cc:617 hparticlemetamatcher.cc:618 hparticlemetamatcher.cc:619 hparticlemetamatcher.cc:620 hparticlemetamatcher.cc:621 hparticlemetamatcher.cc:622 hparticlemetamatcher.cc:623 hparticlemetamatcher.cc:624 hparticlemetamatcher.cc:625 hparticlemetamatcher.cc:626 hparticlemetamatcher.cc:627 hparticlemetamatcher.cc:628 hparticlemetamatcher.cc:629 hparticlemetamatcher.cc:630 hparticlemetamatcher.cc:631 hparticlemetamatcher.cc:632 hparticlemetamatcher.cc:633 hparticlemetamatcher.cc:634 hparticlemetamatcher.cc:635 hparticlemetamatcher.cc:636 hparticlemetamatcher.cc:637 hparticlemetamatcher.cc:638 hparticlemetamatcher.cc:639 hparticlemetamatcher.cc:640 hparticlemetamatcher.cc:641 hparticlemetamatcher.cc:642 hparticlemetamatcher.cc:643 hparticlemetamatcher.cc:644 hparticlemetamatcher.cc:645 hparticlemetamatcher.cc:646 hparticlemetamatcher.cc:647 hparticlemetamatcher.cc:648 hparticlemetamatcher.cc:649 hparticlemetamatcher.cc:650 hparticlemetamatcher.cc:651 hparticlemetamatcher.cc:652 hparticlemetamatcher.cc:653 hparticlemetamatcher.cc:654 hparticlemetamatcher.cc:655 hparticlemetamatcher.cc:656 hparticlemetamatcher.cc:657 hparticlemetamatcher.cc:658 hparticlemetamatcher.cc:659 hparticlemetamatcher.cc:660 hparticlemetamatcher.cc:661 hparticlemetamatcher.cc:662 hparticlemetamatcher.cc:663 hparticlemetamatcher.cc:664 hparticlemetamatcher.cc:665 hparticlemetamatcher.cc:666 hparticlemetamatcher.cc:667 hparticlemetamatcher.cc:668 hparticlemetamatcher.cc:669 hparticlemetamatcher.cc:670 hparticlemetamatcher.cc:671 hparticlemetamatcher.cc:672 hparticlemetamatcher.cc:673 hparticlemetamatcher.cc:674 hparticlemetamatcher.cc:675 hparticlemetamatcher.cc:676 hparticlemetamatcher.cc:677 hparticlemetamatcher.cc:678 hparticlemetamatcher.cc:679 hparticlemetamatcher.cc:680 hparticlemetamatcher.cc:681 hparticlemetamatcher.cc:682 hparticlemetamatcher.cc:683 hparticlemetamatcher.cc:684 hparticlemetamatcher.cc:685 hparticlemetamatcher.cc:686 hparticlemetamatcher.cc:687 hparticlemetamatcher.cc:688 hparticlemetamatcher.cc:689 hparticlemetamatcher.cc:690 hparticlemetamatcher.cc:691 hparticlemetamatcher.cc:692 hparticlemetamatcher.cc:693 hparticlemetamatcher.cc:694 hparticlemetamatcher.cc:695 hparticlemetamatcher.cc:696 hparticlemetamatcher.cc:697 hparticlemetamatcher.cc:698 hparticlemetamatcher.cc:699 hparticlemetamatcher.cc:700 hparticlemetamatcher.cc:701 hparticlemetamatcher.cc:702 hparticlemetamatcher.cc:703 hparticlemetamatcher.cc:704 hparticlemetamatcher.cc:705 hparticlemetamatcher.cc:706 hparticlemetamatcher.cc:707 hparticlemetamatcher.cc:708 hparticlemetamatcher.cc:709 hparticlemetamatcher.cc:710 hparticlemetamatcher.cc:711 hparticlemetamatcher.cc:712 hparticlemetamatcher.cc:713 hparticlemetamatcher.cc:714 hparticlemetamatcher.cc:715 hparticlemetamatcher.cc:716 hparticlemetamatcher.cc:717 hparticlemetamatcher.cc:718 hparticlemetamatcher.cc:719 hparticlemetamatcher.cc:720 hparticlemetamatcher.cc:721 hparticlemetamatcher.cc:722 hparticlemetamatcher.cc:723 hparticlemetamatcher.cc:724 hparticlemetamatcher.cc:725 hparticlemetamatcher.cc:726 hparticlemetamatcher.cc:727 hparticlemetamatcher.cc:728 hparticlemetamatcher.cc:729 hparticlemetamatcher.cc:730 hparticlemetamatcher.cc:731 hparticlemetamatcher.cc:732 hparticlemetamatcher.cc:733 hparticlemetamatcher.cc:734 hparticlemetamatcher.cc:735 hparticlemetamatcher.cc:736 hparticlemetamatcher.cc:737 hparticlemetamatcher.cc:738 hparticlemetamatcher.cc:739 hparticlemetamatcher.cc:740 hparticlemetamatcher.cc:741 hparticlemetamatcher.cc:742 hparticlemetamatcher.cc:743 hparticlemetamatcher.cc:744 hparticlemetamatcher.cc:745 hparticlemetamatcher.cc:746 hparticlemetamatcher.cc:747 hparticlemetamatcher.cc:748 hparticlemetamatcher.cc:749 hparticlemetamatcher.cc:750 hparticlemetamatcher.cc:751 hparticlemetamatcher.cc:752 hparticlemetamatcher.cc:753 hparticlemetamatcher.cc:754 hparticlemetamatcher.cc:755 hparticlemetamatcher.cc:756 hparticlemetamatcher.cc:757 hparticlemetamatcher.cc:758 hparticlemetamatcher.cc:759 hparticlemetamatcher.cc:760 hparticlemetamatcher.cc:761 hparticlemetamatcher.cc:762 hparticlemetamatcher.cc:763 hparticlemetamatcher.cc:764 hparticlemetamatcher.cc:765 hparticlemetamatcher.cc:766 hparticlemetamatcher.cc:767 hparticlemetamatcher.cc:768 hparticlemetamatcher.cc:769 hparticlemetamatcher.cc:770 hparticlemetamatcher.cc:771 hparticlemetamatcher.cc:772 hparticlemetamatcher.cc:773 hparticlemetamatcher.cc:774 hparticlemetamatcher.cc:775 hparticlemetamatcher.cc:776 hparticlemetamatcher.cc:777 hparticlemetamatcher.cc:778 hparticlemetamatcher.cc:779 hparticlemetamatcher.cc:780 hparticlemetamatcher.cc:781 hparticlemetamatcher.cc:782 hparticlemetamatcher.cc:783 hparticlemetamatcher.cc:784 hparticlemetamatcher.cc:785 hparticlemetamatcher.cc:786 hparticlemetamatcher.cc:787 hparticlemetamatcher.cc:788 hparticlemetamatcher.cc:789 hparticlemetamatcher.cc:790 hparticlemetamatcher.cc:791 hparticlemetamatcher.cc:792 hparticlemetamatcher.cc:793 hparticlemetamatcher.cc:794 hparticlemetamatcher.cc:795 hparticlemetamatcher.cc:796 hparticlemetamatcher.cc:797 hparticlemetamatcher.cc:798 hparticlemetamatcher.cc:799 hparticlemetamatcher.cc:800 hparticlemetamatcher.cc:801 hparticlemetamatcher.cc:802 hparticlemetamatcher.cc:803 hparticlemetamatcher.cc:804 hparticlemetamatcher.cc:805 hparticlemetamatcher.cc:806 hparticlemetamatcher.cc:807 hparticlemetamatcher.cc:808 hparticlemetamatcher.cc:809 hparticlemetamatcher.cc:810 hparticlemetamatcher.cc:811 hparticlemetamatcher.cc:812 hparticlemetamatcher.cc:813 hparticlemetamatcher.cc:814 hparticlemetamatcher.cc:815 hparticlemetamatcher.cc:816 hparticlemetamatcher.cc:817 hparticlemetamatcher.cc:818 hparticlemetamatcher.cc:819 hparticlemetamatcher.cc:820 hparticlemetamatcher.cc:821 hparticlemetamatcher.cc:822 hparticlemetamatcher.cc:823 hparticlemetamatcher.cc:824 hparticlemetamatcher.cc:825 hparticlemetamatcher.cc:826 hparticlemetamatcher.cc:827 hparticlemetamatcher.cc:828 hparticlemetamatcher.cc:829 hparticlemetamatcher.cc:830 hparticlemetamatcher.cc:831 hparticlemetamatcher.cc:832 hparticlemetamatcher.cc:833 hparticlemetamatcher.cc:834 hparticlemetamatcher.cc:835 hparticlemetamatcher.cc:836 hparticlemetamatcher.cc:837 hparticlemetamatcher.cc:838 hparticlemetamatcher.cc:839 hparticlemetamatcher.cc:840 hparticlemetamatcher.cc:841 hparticlemetamatcher.cc:842 hparticlemetamatcher.cc:843 hparticlemetamatcher.cc:844 hparticlemetamatcher.cc:845 hparticlemetamatcher.cc:846 hparticlemetamatcher.cc:847 hparticlemetamatcher.cc:848 hparticlemetamatcher.cc:849 hparticlemetamatcher.cc:850 hparticlemetamatcher.cc:851 hparticlemetamatcher.cc:852 hparticlemetamatcher.cc:853 hparticlemetamatcher.cc:854 hparticlemetamatcher.cc:855 hparticlemetamatcher.cc:856 hparticlemetamatcher.cc:857 hparticlemetamatcher.cc:858 hparticlemetamatcher.cc:859 hparticlemetamatcher.cc:860 hparticlemetamatcher.cc:861 hparticlemetamatcher.cc:862 hparticlemetamatcher.cc:863 hparticlemetamatcher.cc:864 hparticlemetamatcher.cc:865 hparticlemetamatcher.cc:866 hparticlemetamatcher.cc:867 hparticlemetamatcher.cc:868 hparticlemetamatcher.cc:869 hparticlemetamatcher.cc:870 hparticlemetamatcher.cc:871 hparticlemetamatcher.cc:872 hparticlemetamatcher.cc:873 hparticlemetamatcher.cc:874 hparticlemetamatcher.cc:875 hparticlemetamatcher.cc:876 hparticlemetamatcher.cc:877 hparticlemetamatcher.cc:878 hparticlemetamatcher.cc:879 hparticlemetamatcher.cc:880 hparticlemetamatcher.cc:881 hparticlemetamatcher.cc:882 hparticlemetamatcher.cc:883 hparticlemetamatcher.cc:884 hparticlemetamatcher.cc:885 hparticlemetamatcher.cc:886 hparticlemetamatcher.cc:887 hparticlemetamatcher.cc:888 hparticlemetamatcher.cc:889 hparticlemetamatcher.cc:890 hparticlemetamatcher.cc:891 hparticlemetamatcher.cc:892 hparticlemetamatcher.cc:893 hparticlemetamatcher.cc:894 hparticlemetamatcher.cc:895 hparticlemetamatcher.cc:896 hparticlemetamatcher.cc:897 hparticlemetamatcher.cc:898 hparticlemetamatcher.cc:899 hparticlemetamatcher.cc:900 hparticlemetamatcher.cc:901 hparticlemetamatcher.cc:902 hparticlemetamatcher.cc:903 hparticlemetamatcher.cc:904 hparticlemetamatcher.cc:905 hparticlemetamatcher.cc:906 hparticlemetamatcher.cc:907 hparticlemetamatcher.cc:908 hparticlemetamatcher.cc:909 hparticlemetamatcher.cc:910 hparticlemetamatcher.cc:911 hparticlemetamatcher.cc:912 hparticlemetamatcher.cc:913 hparticlemetamatcher.cc:914 hparticlemetamatcher.cc:915 hparticlemetamatcher.cc:916 hparticlemetamatcher.cc:917 hparticlemetamatcher.cc:918 hparticlemetamatcher.cc:919 hparticlemetamatcher.cc:920 hparticlemetamatcher.cc:921 hparticlemetamatcher.cc:922 hparticlemetamatcher.cc:923 hparticlemetamatcher.cc:924 hparticlemetamatcher.cc:925 hparticlemetamatcher.cc:926 hparticlemetamatcher.cc:927 hparticlemetamatcher.cc:928 hparticlemetamatcher.cc:929 hparticlemetamatcher.cc:930 hparticlemetamatcher.cc:931 hparticlemetamatcher.cc:932 hparticlemetamatcher.cc:933 hparticlemetamatcher.cc:934 hparticlemetamatcher.cc:935 hparticlemetamatcher.cc:936 hparticlemetamatcher.cc:937 hparticlemetamatcher.cc:938 hparticlemetamatcher.cc:939 hparticlemetamatcher.cc:940 hparticlemetamatcher.cc:941 hparticlemetamatcher.cc:942 hparticlemetamatcher.cc:943 hparticlemetamatcher.cc:944 hparticlemetamatcher.cc:945 hparticlemetamatcher.cc:946 hparticlemetamatcher.cc:947 hparticlemetamatcher.cc:948 hparticlemetamatcher.cc:949 hparticlemetamatcher.cc:950 hparticlemetamatcher.cc:951 hparticlemetamatcher.cc:952 hparticlemetamatcher.cc:953 hparticlemetamatcher.cc:954 hparticlemetamatcher.cc:955 hparticlemetamatcher.cc:956 hparticlemetamatcher.cc:957 hparticlemetamatcher.cc:958 hparticlemetamatcher.cc:959 hparticlemetamatcher.cc:960 hparticlemetamatcher.cc:961 hparticlemetamatcher.cc:962 hparticlemetamatcher.cc:963 hparticlemetamatcher.cc:964 hparticlemetamatcher.cc:965 hparticlemetamatcher.cc:966 hparticlemetamatcher.cc:967 hparticlemetamatcher.cc:968 hparticlemetamatcher.cc:969 hparticlemetamatcher.cc:970 hparticlemetamatcher.cc:971 hparticlemetamatcher.cc:972 hparticlemetamatcher.cc:973 hparticlemetamatcher.cc:974 hparticlemetamatcher.cc:975 hparticlemetamatcher.cc:976 hparticlemetamatcher.cc:977 hparticlemetamatcher.cc:978 hparticlemetamatcher.cc:979 hparticlemetamatcher.cc:980 hparticlemetamatcher.cc:981 hparticlemetamatcher.cc:982 hparticlemetamatcher.cc:983 hparticlemetamatcher.cc:984 hparticlemetamatcher.cc:985 hparticlemetamatcher.cc:986 hparticlemetamatcher.cc:987 hparticlemetamatcher.cc:988 hparticlemetamatcher.cc:989 hparticlemetamatcher.cc:990 hparticlemetamatcher.cc:991 hparticlemetamatcher.cc:992 hparticlemetamatcher.cc:993 hparticlemetamatcher.cc:994 hparticlemetamatcher.cc:995 hparticlemetamatcher.cc:996 hparticlemetamatcher.cc:997 hparticlemetamatcher.cc:998 hparticlemetamatcher.cc:999 hparticlemetamatcher.cc:1000 hparticlemetamatcher.cc:1001 hparticlemetamatcher.cc:1002 hparticlemetamatcher.cc:1003 hparticlemetamatcher.cc:1004 hparticlemetamatcher.cc:1005 hparticlemetamatcher.cc:1006 hparticlemetamatcher.cc:1007 hparticlemetamatcher.cc:1008 hparticlemetamatcher.cc:1009 hparticlemetamatcher.cc:1010 hparticlemetamatcher.cc:1011 hparticlemetamatcher.cc:1012 hparticlemetamatcher.cc:1013 hparticlemetamatcher.cc:1014 hparticlemetamatcher.cc:1015 hparticlemetamatcher.cc:1016 hparticlemetamatcher.cc:1017 hparticlemetamatcher.cc:1018 hparticlemetamatcher.cc:1019 hparticlemetamatcher.cc:1020 hparticlemetamatcher.cc:1021 hparticlemetamatcher.cc:1022 hparticlemetamatcher.cc:1023 hparticlemetamatcher.cc:1024 hparticlemetamatcher.cc:1025 hparticlemetamatcher.cc:1026 hparticlemetamatcher.cc:1027 hparticlemetamatcher.cc:1028 hparticlemetamatcher.cc:1029 hparticlemetamatcher.cc:1030 hparticlemetamatcher.cc:1031 hparticlemetamatcher.cc:1032 hparticlemetamatcher.cc:1033 hparticlemetamatcher.cc:1034 hparticlemetamatcher.cc:1035 hparticlemetamatcher.cc:1036 hparticlemetamatcher.cc:1037 hparticlemetamatcher.cc:1038 hparticlemetamatcher.cc:1039 hparticlemetamatcher.cc:1040 hparticlemetamatcher.cc:1041 hparticlemetamatcher.cc:1042 hparticlemetamatcher.cc:1043 hparticlemetamatcher.cc:1044 hparticlemetamatcher.cc:1045 hparticlemetamatcher.cc:1046 hparticlemetamatcher.cc:1047 hparticlemetamatcher.cc:1048 hparticlemetamatcher.cc:1049 hparticlemetamatcher.cc:1050 hparticlemetamatcher.cc:1051 hparticlemetamatcher.cc:1052 hparticlemetamatcher.cc:1053 hparticlemetamatcher.cc:1054 hparticlemetamatcher.cc:1055 hparticlemetamatcher.cc:1056 hparticlemetamatcher.cc:1057 hparticlemetamatcher.cc:1058 hparticlemetamatcher.cc:1059 hparticlemetamatcher.cc:1060 hparticlemetamatcher.cc:1061 hparticlemetamatcher.cc:1062 hparticlemetamatcher.cc:1063 hparticlemetamatcher.cc:1064 hparticlemetamatcher.cc:1065 hparticlemetamatcher.cc:1066 hparticlemetamatcher.cc:1067 hparticlemetamatcher.cc:1068 hparticlemetamatcher.cc:1069 hparticlemetamatcher.cc:1070 hparticlemetamatcher.cc:1071 hparticlemetamatcher.cc:1072 hparticlemetamatcher.cc:1073 hparticlemetamatcher.cc:1074 hparticlemetamatcher.cc:1075 hparticlemetamatcher.cc:1076 hparticlemetamatcher.cc:1077 hparticlemetamatcher.cc:1078 hparticlemetamatcher.cc:1079 hparticlemetamatcher.cc:1080 hparticlemetamatcher.cc:1081 hparticlemetamatcher.cc:1082 hparticlemetamatcher.cc:1083 hparticlemetamatcher.cc:1084 hparticlemetamatcher.cc:1085 hparticlemetamatcher.cc:1086 hparticlemetamatcher.cc:1087 hparticlemetamatcher.cc:1088 hparticlemetamatcher.cc:1089 hparticlemetamatcher.cc:1090 hparticlemetamatcher.cc:1091 hparticlemetamatcher.cc:1092 hparticlemetamatcher.cc:1093 hparticlemetamatcher.cc:1094 hparticlemetamatcher.cc:1095 hparticlemetamatcher.cc:1096 hparticlemetamatcher.cc:1097 hparticlemetamatcher.cc:1098 hparticlemetamatcher.cc:1099 hparticlemetamatcher.cc:1100 hparticlemetamatcher.cc:1101 hparticlemetamatcher.cc:1102 hparticlemetamatcher.cc:1103 hparticlemetamatcher.cc:1104 hparticlemetamatcher.cc:1105 hparticlemetamatcher.cc:1106 hparticlemetamatcher.cc:1107 hparticlemetamatcher.cc:1108 hparticlemetamatcher.cc:1109 hparticlemetamatcher.cc:1110 hparticlemetamatcher.cc:1111 hparticlemetamatcher.cc:1112 hparticlemetamatcher.cc:1113 hparticlemetamatcher.cc:1114 hparticlemetamatcher.cc:1115 hparticlemetamatcher.cc:1116 hparticlemetamatcher.cc:1117 hparticlemetamatcher.cc:1118 hparticlemetamatcher.cc:1119 hparticlemetamatcher.cc:1120 hparticlemetamatcher.cc:1121 hparticlemetamatcher.cc:1122 hparticlemetamatcher.cc:1123 hparticlemetamatcher.cc:1124 hparticlemetamatcher.cc:1125 hparticlemetamatcher.cc:1126 hparticlemetamatcher.cc:1127 hparticlemetamatcher.cc:1128 hparticlemetamatcher.cc:1129 hparticlemetamatcher.cc:1130 hparticlemetamatcher.cc:1131 hparticlemetamatcher.cc:1132 hparticlemetamatcher.cc:1133 hparticlemetamatcher.cc:1134 hparticlemetamatcher.cc:1135 hparticlemetamatcher.cc:1136 hparticlemetamatcher.cc:1137 hparticlemetamatcher.cc:1138 hparticlemetamatcher.cc:1139 hparticlemetamatcher.cc:1140 hparticlemetamatcher.cc:1141 hparticlemetamatcher.cc:1142 hparticlemetamatcher.cc:1143 hparticlemetamatcher.cc:1144 hparticlemetamatcher.cc:1145 hparticlemetamatcher.cc:1146 hparticlemetamatcher.cc:1147 hparticlemetamatcher.cc:1148 hparticlemetamatcher.cc:1149 hparticlemetamatcher.cc:1150 hparticlemetamatcher.cc:1151 hparticlemetamatcher.cc:1152 hparticlemetamatcher.cc:1153 hparticlemetamatcher.cc:1154 hparticlemetamatcher.cc:1155 hparticlemetamatcher.cc:1156 hparticlemetamatcher.cc:1157 hparticlemetamatcher.cc:1158 hparticlemetamatcher.cc:1159 hparticlemetamatcher.cc:1160 hparticlemetamatcher.cc:1161 hparticlemetamatcher.cc:1162 hparticlemetamatcher.cc:1163 hparticlemetamatcher.cc:1164 hparticlemetamatcher.cc:1165 hparticlemetamatcher.cc:1166 hparticlemetamatcher.cc:1167 hparticlemetamatcher.cc:1168 hparticlemetamatcher.cc:1169 hparticlemetamatcher.cc:1170 hparticlemetamatcher.cc:1171 hparticlemetamatcher.cc:1172 hparticlemetamatcher.cc:1173 hparticlemetamatcher.cc:1174 hparticlemetamatcher.cc:1175 hparticlemetamatcher.cc:1176 hparticlemetamatcher.cc:1177 hparticlemetamatcher.cc:1178 hparticlemetamatcher.cc:1179 hparticlemetamatcher.cc:1180 hparticlemetamatcher.cc:1181 hparticlemetamatcher.cc:1182 hparticlemetamatcher.cc:1183 hparticlemetamatcher.cc:1184 hparticlemetamatcher.cc:1185 hparticlemetamatcher.cc:1186 hparticlemetamatcher.cc:1187 hparticlemetamatcher.cc:1188 hparticlemetamatcher.cc:1189 hparticlemetamatcher.cc:1190 hparticlemetamatcher.cc:1191 hparticlemetamatcher.cc:1192 hparticlemetamatcher.cc:1193 hparticlemetamatcher.cc:1194 hparticlemetamatcher.cc:1195 hparticlemetamatcher.cc:1196 hparticlemetamatcher.cc:1197 hparticlemetamatcher.cc:1198 hparticlemetamatcher.cc:1199 hparticlemetamatcher.cc:1200 hparticlemetamatcher.cc:1201 hparticlemetamatcher.cc:1202 hparticlemetamatcher.cc:1203 hparticlemetamatcher.cc:1204 hparticlemetamatcher.cc:1205 hparticlemetamatcher.cc:1206 hparticlemetamatcher.cc:1207 hparticlemetamatcher.cc:1208 hparticlemetamatcher.cc:1209 hparticlemetamatcher.cc:1210 hparticlemetamatcher.cc:1211 hparticlemetamatcher.cc:1212 hparticlemetamatcher.cc:1213 hparticlemetamatcher.cc:1214 hparticlemetamatcher.cc:1215 hparticlemetamatcher.cc:1216 hparticlemetamatcher.cc:1217 hparticlemetamatcher.cc:1218 hparticlemetamatcher.cc:1219 hparticlemetamatcher.cc:1220 hparticlemetamatcher.cc:1221 hparticlemetamatcher.cc:1222 hparticlemetamatcher.cc:1223 hparticlemetamatcher.cc:1224 hparticlemetamatcher.cc:1225 hparticlemetamatcher.cc:1226 hparticlemetamatcher.cc:1227 hparticlemetamatcher.cc:1228 hparticlemetamatcher.cc:1229 hparticlemetamatcher.cc:1230 hparticlemetamatcher.cc:1231 hparticlemetamatcher.cc:1232 hparticlemetamatcher.cc:1233 hparticlemetamatcher.cc:1234 hparticlemetamatcher.cc:1235 hparticlemetamatcher.cc:1236 hparticlemetamatcher.cc:1237 hparticlemetamatcher.cc:1238 hparticlemetamatcher.cc:1239 hparticlemetamatcher.cc:1240 hparticlemetamatcher.cc:1241 hparticlemetamatcher.cc:1242 hparticlemetamatcher.cc:1243 hparticlemetamatcher.cc:1244 hparticlemetamatcher.cc:1245