#include "hparticlepairmaker.h"
#include "hparticlepairdraw.h"
#include "hcategorymanager.h"
#include "hphysicsconstants.h"
#include "hades.h"
#include "hrecevent.h"
#include "TCanvas.h"
#include "TH1F.h"
#include "TLatex.h"
#include "TEllipse.h"
#include "TLine.h"
ClassImp(HParticlePairMaker)
// <img src="http://web-docs.gsi.de/~halo/docs/hydra/classDocumentation/docu_pics/hydra2/particle/lepton_pair_cases_1.png" alt="Lepton Pair Cases" width="750" >
// <img src="http://web-docs.gsi.de/~halo/docs/hydra/classDocumentation/docu_pics/hydra2/particle/lepton_pair_cases_2.png" alt="Lepton Pair Cases" width="750" >
//END_HTML
// <img src="http://web-docs.gsi.de/~halo/docs/hydra/classDocumentation/docu_pics/hydra2/particle/hadron_pair_cases.png" alt="Hadron Pair Cases" width="750" >
//END_HTML
// <img src="http://web-docs.gsi.de/~halo/docs/hydra/classDocumentation/docu_pics/hydra2/particle/lepton_hadron_pair_cases.png" alt="Mixed Lepton Hadron Pair Cases" width="525" >
//END_HTML
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
Bool_t HParticlePairMaker::frequireRich = kTRUE;
HParticlePairMaker::HParticlePairMaker()
{
    fPID1      = HPhysicsConstants::pid("e+");
    fPID2      = HPhysicsConstants::pid("e-");
    fMotherPID = HPhysicsConstants::pid("dilepton");
    fselectPID1 = 0;
    fselectPID2 = 0;
    fuserFilter = 0;
    fuse_kIsLepton = kTRUE;
    fVertexCase = kVertexParticle ;
    fdoSkippedFullCandPairs = kTRUE;
    fpairs    .resize(10000);
    fothers   .resize(1000);
    ffullrecoOthers   .resize(100);
    fnofullrecoOthers .resize(1000);
    freference.resize(100);
    fCaseVec.push_back(kPairCase1);
    fCaseVec.push_back(kPairCase2);
    fCaseVec.push_back(kPairCase3);
    fCaseVec.push_back(kPairCase4);
    fCaseVec.push_back(kPairCase5);
    fCaseVec.push_back(kPairCase6);
    fCaseVec.push_back(kPairCase7);
    fCaseVec.push_back(kPairCase8);
    fCaseVec.push_back(kPairCase9);
    fCaseVec.push_back(kPairCase10);
    fCaseVec.push_back(kPairCase11);
    fCaseVec.push_back(kPairCase12);
    fCaseVec.push_back(kPairCase13);
    fCaseVec.push_back(kPairCase14);
    fCaseVec.push_back(kPairCase15);
    for(UInt_t i=0;i<fCaseVec.size();i++) fCaseCt.push_back(0);
    richCandCt = 0 ;
}
HParticlePairMaker::~HParticlePairMaker()
{
     clearVectors();
}
Bool_t HParticlePairMaker::selectPos(HParticleCand* cand)
{
    
    
    
    if(getRequireRich() && cand->getRichInd() == -1) return kFALSE;
    if( cand->getCharge() > 0 ) return kTRUE;
    else                        return kFALSE;
}
Bool_t HParticlePairMaker::selectNeg(HParticleCand* cand)
{
    
    
    
    if(getRequireRich() && cand->getRichInd() == -1) return kFALSE;
    if( cand->getCharge() < 0 ) return kTRUE;
    else                        return kFALSE;
}
void HParticlePairMaker::bookHits(HParticleCand* cand1)
{
    
    if(cand1->getRichInd() !=-1 ) {
	if(mRichtoCand.find(cand1->getRichInd()) == mRichtoCand.end()){
	    vector<HParticleCand*> v;
	    v.push_back(cand1);
	    mRichtoCand[cand1->getRichInd()] = v;
	} else {
	    mRichtoCand[cand1->getRichInd()].push_back(cand1);
	}
    }
    if(cand1->getInnerSegInd() !=-1 ) {
	if(mInnerMdctoCand.find(cand1->getInnerSegInd()) == mInnerMdctoCand.end()){
	    vector<HParticleCand*> v;
	    v.push_back(cand1);
	    mInnerMdctoCand[cand1->getInnerSegInd()] = v;
	} else {
	    mInnerMdctoCand[cand1->getInnerSegInd()].push_back(cand1);
	}
    }
    if(cand1->getOuterSegInd() !=-1 ) {
	if(mOuterMdctoCand.find(cand1->getOuterSegInd()) == mOuterMdctoCand.end()){
	    vector<HParticleCand*> v;
	    v.push_back(cand1);
	    mOuterMdctoCand[cand1->getOuterSegInd()] = v;
	} else {
	    mOuterMdctoCand[cand1->getOuterSegInd()].push_back(cand1);
	}
    }
    if(cand1->getSystemUsed() != -1){
	Int_t meta = cand1->getMetaHitInd();
	if(cand1->isTofHitUsed()){
	    if(mTofHittoCand.find(meta) == mTofHittoCand.end()){
		vector<HParticleCand*> v;
		v.push_back(cand1);
		mTofHittoCand[meta] = v;
	    } else {
		mTofHittoCand[meta].push_back(cand1);
	    }
	} else if (cand1->isTofClstUsed()){
	    if(mTofClsttoCand.find(meta) == mTofClsttoCand.end()){
		vector<HParticleCand*> v;
		v.push_back(cand1);
		mTofClsttoCand[meta] = v;
	    } else {
		mTofClsttoCand[meta].push_back(cand1);
	    }
	} else if (cand1->isRpcClstUsed()){
	    if(mRpcClsttoCand.find(meta) == mRpcClsttoCand.end()){
		vector<HParticleCand*> v;
		v.push_back(cand1);
		mRpcClsttoCand[meta] = v;
	    } else {
		mRpcClsttoCand[meta].push_back(cand1);
	    }
	} else if (cand1->isShowerUsed()){
	    if(mShowertoCand.find(meta) == mShowertoCand.end()){
		vector<HParticleCand*> v;
		v.push_back(cand1);
		mShowertoCand[meta] = v;
	    } else {
		mShowertoCand[meta].push_back(cand1);
	    }
	} else if (cand1->isEmcUsed()){
	    if(mEmctoCand.find(meta) == mEmctoCand.end()){
		vector<HParticleCand*> v;
		v.push_back(cand1);
		mEmctoCand[meta] = v;
	    } else {
		mEmctoCand[meta].push_back(cand1);
	    }
	}
    }
}
void HParticlePairMaker::selectPID(HParticleCand* cand1,Int_t& pid1,Bool_t warn)
{
    if(       (*fselectPID1)(cand1) ) { pid1 = fPID1;}    
    else if  ((*fselectPID2)(cand1) ) { pid1 = fPID2;}
    else     {
	if(warn){
	    Warning("nextEvent()","Reference particle not labeled with PID! Should not happen. Check your selection functions. frequireRich = kTRUE but kIsLepton is not used as referencce this might cause empty pids.");
	    cand1->print();
	}
    }
}
void HParticlePairMaker::nextEvent()
{
    
    
    
    
    
    
    
    
    
    
    
    
    clearVectors();
    if(!fselectPID1) fselectPID1 = HParticlePairMaker::selectPos;
    if(!fselectPID2) fselectPID2 = HParticlePairMaker::selectNeg;
    HRecEvent* event = (HRecEvent*)gHades->getCurrentEvent();
    if(event){
	if(fVertexCase != kVertexUser){
	    fVertex = HParticleTool::getGlobalVertex(fVertexCase,kFALSE);
	}
	HCategory* candCat = (HCategory*) event->getCategory(catParticleCand);
	if(candCat){
	    UInt_t n = candCat->getEntries();
	    HParticleCand* cand1 = 0 ;
	    HParticleCand* cand2 = 0 ;
	    
	    
	    for(UInt_t i=0; i < n; i++){
		cand1 = HCategoryManager::getObject(cand1,candCat,i);
		
		
		bookHits(cand1);
		
		if(cand1){
		    if(fuserFilter && !(*fuserFilter)(cand1)) continue;
		    if(( fuse_kIsLepton && cand1->isFlagBit(Particle::kIsLepton)) ||
		       (!fuse_kIsLepton && cand1->isFlagBit(Particle::kIsUsed))
		      ){
			freference.push_back(cand1);
		    } else {
			fothers.push_back(cand1);
		    }
		}
	    } 
	    
	    
	    
	    Int_t pid1,pid2;
	    pid1 = pid2 = -10;
	    
	    
	    n = freference.size();
	    if(n > 1){
		for(UInt_t i = 0 ; i < n ; i++){
		    cand1 = freference[i];
		    pid1 = -10;
		    selectPID(cand1,pid1,kTRUE);
		    for(UInt_t j = i+1 ; j < n; j++){
			cand2 = freference[j];
			if(cand2->getRichInd()!=-1) richCandCt++;
			UInt_t flag = 0;
			HParticleTool::setPairFlags(flag,cand2,cand1);
			if(!fuse_kIsLepton) flag=flag|kNoUseRICH;
			pid2 = -10;
			selectPID(cand2,pid2,kTRUE);
			HParticlePair pair;
			pair.setPair(cand1,pid1,cand2,pid2,fMotherPID,flag,fVertex);
			fpairs.push_back(pair);
		    } 
		} 
	    }
	    
	    
	    
	    for(UInt_t i = 0 ; i < freference.size(); i++){
		cand1 = freference[i];
		pid1 = -10;
		selectPID(cand1,pid1,kTRUE);
		for(UInt_t j = 0 ; j < fothers.size(); j++){
		    cand2 = fothers[j];
		    if(cand2->getRichInd()!=-1) richCandCt++;
		    UInt_t flag = 0;
		    HParticleTool::setPairFlags(flag,cand2,cand1);
		    if(!fuse_kIsLepton) flag=flag|kNoUseRICH;
		    pid2 = -10;
		    if(        pid1 == fPID2 && (*fselectPID1)(cand2) ) { pid2 = fPID1;}  
		    else if  ( pid1 == fPID1 && (*fselectPID2)(cand2) ) { pid2 = fPID2;}
		    if(pid2 == -10){
			if((flag&kNoOuterMDC2) == kNoOuterMDC2) {
			    
			    
			    
			    if(pid1 == fPID1) pid2 = fPID2;
			    else              pid2 = fPID1;
			}
		    }
		    if(pid2 == -10) { 
			if(cand2->getCharge() != 0){
			    if(cand2->getCharge() > 0) pid2 =  HPhysicsConstants::pid("fake+");
			    else                       pid2 =  HPhysicsConstants::pid("fake-");
			} else {
			    if(HPhysicsConstants::charge(pid1) < 0 ) pid2 =  HPhysicsConstants::pid("fake+");
			    else                                     pid2 =  HPhysicsConstants::pid("fake-");
			}
		    }
		    HParticlePair pair;
		    pair.setPair(cand1,pid1,cand2,pid2,fMotherPID,flag,fVertex);
		    fpairs.push_back(pair);
		    
#ifdef  dbug
		    Int_t ct = 0 ;
		    for(UInt_t k = 0; k < fCaseVec.size(); k ++){   
			if(HParticleTool::evalPairsFlags(fCaseVec[k],pair) || cand2->getRichInd()==-1) {
			    good2=kTRUE;
			    if(cand2->getRichInd()!=-1) ct++;
			}
		    }
		    if(!good2 || ct>1) pair.print();
#endif
		} 
	    } 
	    
	    if(fdoSkippedFullCandPairs)
	    {
                
		
		
                for(UInt_t j = 0 ; j < fothers.size(); j++){
                    HParticleCand* c = fothers[j];
                    if(c->isFlagAND(4,                                 
				    Particle::kIsAcceptedHitInnerMDC,
				    Particle::kIsAcceptedHitOuterMDC,
				    Particle::kIsAcceptedHitMETA,
				    Particle::kIsAcceptedRK )){
                          ffullrecoOthers.push_back(c);
		    } else {
                          fnofullrecoOthers.push_back(c);
		    }
		}
		
                
		for(UInt_t i = 0 ; i < ffullrecoOthers.size(); i++){
		    cand1 = ffullrecoOthers[i];
		    pid1 = -10;
		    selectPID(cand1,pid1,kTRUE);
		    for(UInt_t j = i+1 ; j < ffullrecoOthers.size(); j++){
			cand2 = ffullrecoOthers[j];
			UInt_t flag = 0;
			HParticleTool::setPairFlags(flag,cand2,cand1);
			if(!fuse_kIsLepton) flag=flag|kNoUseRICH;
			pid2 = -10;
			if(        pid1 == fPID2 && (*fselectPID1)(cand2) ) { pid2 = fPID1;}  
			else if  ( pid1 == fPID1 && (*fselectPID2)(cand2) ) { pid2 = fPID2;}
			if(pid2 == -10){
			    if((flag&kNoOuterMDC2) == kNoOuterMDC2) {
				
				
				
				if(pid1 == fPID1) pid2 = fPID2;
				else              pid2 = fPID1;
			    }
			}
			if(pid2 == -10) { 
			    if(cand2->getCharge() != 0){
				if(cand2->getCharge() > 0) pid2 =  HPhysicsConstants::pid("fake+");
				else                       pid2 =  HPhysicsConstants::pid("fake-");
			    } else {
				if(HPhysicsConstants::charge(pid1) < 0 ) pid2 =  HPhysicsConstants::pid("fake+");
				else                                     pid2 =  HPhysicsConstants::pid("fake-");
			    }
			}
			HParticlePair pair;
			pair.setPair(cand1,pid1,cand2,pid2,fMotherPID,flag,fVertex);
			fpairs.push_back(pair);
		    } 
		} 
		
		
                
		for(UInt_t i = 0 ; i < ffullrecoOthers.size(); i++){
		    cand1 = ffullrecoOthers[i];
		    pid1 = -10;
		    selectPID(cand1,pid1,kTRUE);
		    for(UInt_t j = 0 ; j < fnofullrecoOthers.size(); j++){
			cand2 = fnofullrecoOthers[j];
			UInt_t flag = 0;
			HParticleTool::setPairFlags(flag,cand2,cand1);
			if(!fuse_kIsLepton) flag=flag|kNoUseRICH;
			pid2 = -10;
			if(        pid1 == fPID2 && (*fselectPID1)(cand2) ) { pid2 = fPID1;}  
			else if  ( pid1 == fPID1 && (*fselectPID2)(cand2) ) { pid2 = fPID2;}
			if(pid2 == -10){
			    if((flag&kNoOuterMDC2) == kNoOuterMDC2) {
				
				
				
				if(pid1 == fPID1) pid2 = fPID2;
				else              pid2 = fPID1;
			    }
			}
			if(pid2 == -10) { 
			    if(cand2->getCharge() != 0){
				if(cand2->getCharge() > 0) pid2 =  HPhysicsConstants::pid("fake+");
				else                       pid2 =  HPhysicsConstants::pid("fake-");
			    } else {
				if(HPhysicsConstants::charge(pid1) < 0 ) pid2 =  HPhysicsConstants::pid("fake+");
				else                                     pid2 =  HPhysicsConstants::pid("fake-");
			    }
			}
			HParticlePair pair;
			pair.setPair(cand1,pid1,cand2,pid2,fMotherPID,flag,fVertex);
			fpairs.push_back(pair);
		    } 
		} 
		
	    }  
	    
	    
	    for(UInt_t i = 0; i < fpairs.size(); i++){
		HParticlePair* pair = &(fpairs[i]);
		cand1 = dynamic_cast<HParticleCand*>(pair->getCand(0));
		cand2 = dynamic_cast<HParticleCand*>(pair->getCand(1));
		
		
		for(UInt_t k = 0; k < fCaseVec.size(); k ++){
		    if(HParticleTool::evalPairsFlags(fCaseVec[k],*pair)) {
			fCaseCt[k]++;
		    }
		}
		
		if(mCandtoPair.find(cand1) == mCandtoPair.end()){
		    vector<HParticlePair*> pairs;
		    pairs.push_back(pair);
		    mCandtoPair[cand1] = pairs;
		} else {
		    mCandtoPair[cand1].push_back(pair);
		}
		if(mCandtoPair.find(cand2) == mCandtoPair.end()){
		    vector<HParticlePair*> pairs;
		    pairs.push_back(pair);
		    mCandtoPair[cand2] = pairs;
		} else {
		    mCandtoPair[cand2].push_back(pair);
		}
	    }
	    
	}
    }
}
void HParticlePairMaker::clearVectors()
{
    
    freference     .clear();
    fothers        .clear();
    fpairs         .clear();
    ffullrecoOthers.clear();
    fnofullrecoOthers.clear();
    mTofHittoCand  .clear();
    mTofClsttoCand .clear();
    mRpcClsttoCand .clear();
    mShowertoCand  .clear();
    mEmctoCand     .clear();
    mInnerMdctoCand.clear();
    mOuterMdctoCand.clear();
    mRichtoCand    .clear();
    mCandtoPair    .clear();
}
void HParticlePairMaker::filterPairsVector(vector<HParticlePair*>& filterpairs,UInt_t flag)
{
    
    
    filterpairs.clear();
    for(UInt_t i = 0; i < fpairs.size(); i++){
        HParticlePair& pair = fpairs[i];
	if(HParticleTool::evalPairsFlags(flag,pair)){
	    filterpairs.push_back(&pair);
	}
    }
}
void HParticlePairMaker::filterPairsVector(vector<HParticlePair*>& filterpairs,vector<UInt_t>& flags)
{
    
    
    filterpairs.clear();
    for(UInt_t i = 0; i < fpairs.size(); i++){
        HParticlePair& pair = fpairs[i];
	if(HParticleTool::evalPairsFlags(flags,pair)){
	    filterpairs.push_back(&pair);
	}
    }
}
Int_t HParticlePairMaker::filterCandidates(HVirtualCand* cand,vector<HVirtualCand*>& candidates,UInt_t flag,Float_t oAngle)
{
    
    
    
    
    
    
    
    candidates.clear();
    map<HVirtualCand*,vector<HParticlePair*> >::iterator it = mCandtoPair.find(cand);
    if(it != mCandtoPair.end()){
	vector<HParticlePair*>& v = it->second;
	for(UInt_t i = 0 ; i < v.size(); i++){
            HParticlePair& pair = *(v[i]);
	    if(HParticleTool::evalPairsFlags(flag,pair) && (oAngle < 0 || pair.getOpeningAngle() < oAngle )){
		if(pair.getCand(0) == cand) candidates.push_back(pair.getCand(1));
                else                        candidates.push_back(pair.getCand(0));
	    }
	}
       return candidates.size();
    }
    return -1;
}
Int_t HParticlePairMaker::filterCandidates (HVirtualCand* cand,vector<HParticlePair*>& filterpairs,UInt_t flag,Float_t oAngle)
{
    
    
    
    
    
    
    
    filterpairs.clear();
    map<HVirtualCand*,vector<HParticlePair*> >::iterator it = mCandtoPair.find(cand);
    if(it != mCandtoPair.end()){
	vector<HParticlePair*>& v = it->second;
        for(UInt_t i = 0 ; i < v.size(); i++){
            if(HParticleTool::evalPairsFlags(flag,*(v[i])) && ( oAngle < 0 || v[i]->getOpeningAngle() < oAngle) ){
		filterpairs.push_back(v[i]);
	    }
	}
    } else return -1;
    return filterpairs.size();
}
Int_t HParticlePairMaker::getSameRich(HParticleCand* cand,vector<HParticleCand*>& candidates,UInt_t flag,Bool_t isReference)
{
    
    
    
    
    
    candidates.clear();
    if(cand->getRichInd() !=-1 ){
	map<Int_t,vector<HParticleCand*> >::iterator it = mRichtoCand.find(cand->getRichInd());
        if(it != mRichtoCand.end()){
	    vector<HParticleCand*>& v = it->second;
	    for(UInt_t i = 0 ; i < v.size(); i++){
		if(v[i] != cand) {  
		    if(flag == 0 ) candidates.push_back(v[i]);
		    else {
			Bool_t fl = kFALSE;
			if(!isReference) fl=HParticleTool::evalPairsFlags(fl,cand,v[i]);
			else             fl=HParticleTool::evalPairsFlags(fl,v[i],cand);
			if(fl){
			    candidates.push_back(v[i]);
			}
		    }
		}
	    } 
	} else return -1;
    }
    return candidates.size();
}
Int_t HParticlePairMaker::getSameInnerMdc(HParticleCand* cand,vector<HParticleCand*>& candidates,UInt_t flag,Bool_t isReference)
{
    
    
    
    
    
    candidates.clear();
    if(cand->getInnerSegInd() !=-1 ){
	map<Int_t,vector<HParticleCand*> >::iterator it = mInnerMdctoCand.find(cand->getInnerSegInd());
        if(it != mInnerMdctoCand.end()){
	    vector<HParticleCand*>& v = it->second;
	    for(UInt_t i = 0 ; i < v.size(); i++){
		if(v[i] != cand) {  
		    if(flag == 0 ) candidates.push_back(v[i]);
		    else {
			Bool_t fl = kFALSE;
			if(!isReference) fl=HParticleTool::evalPairsFlags(fl,cand,v[i]);
			else             fl=HParticleTool::evalPairsFlags(fl,v[i],cand);
			if(fl){
			    candidates.push_back(v[i]);
			}
		    }
		}
	    } 
	} else return -1;
    }
    return candidates.size();
}
Int_t HParticlePairMaker::getSameOuterMdc(HParticleCand* cand,vector<HParticleCand*>& candidates,UInt_t flag,Bool_t isReference)
{
    
    
    
    
    
    candidates.clear();
    if(cand->getOuterSegInd() !=-1 ){
	map<Int_t,vector<HParticleCand*> >::iterator it = mOuterMdctoCand.find(cand->getOuterSegInd());
        if(it != mOuterMdctoCand.end()){
	    vector<HParticleCand*>& v = it->second;
	    for(UInt_t i = 0 ; i < v.size(); i++){
		if(v[i] != cand) {  
		    if(flag == 0 ) candidates.push_back(v[i]);
		    else {
			Bool_t fl = kFALSE;
			if(!isReference) fl=HParticleTool::evalPairsFlags(fl,cand,v[i]);
			else             fl=HParticleTool::evalPairsFlags(fl,v[i],cand);
			if(fl){
			    candidates.push_back(v[i]);
			}
		    }
		}
	    } 
	} else return -1;
    }
    return candidates.size();
}
Int_t HParticlePairMaker::getSameMeta(HParticleCand* cand,vector<HParticleCand*>& candidates,UInt_t flag,Bool_t isReference)
{
    
    
    
    
    
    candidates.clear();
    Int_t metaind = cand->getMetaHitInd();
    Int_t sel     = cand->getSelectedMeta();
    if(metaind != -1 ){
        map<Int_t,vector<HParticleCand*> >* mp =0;
	if     (sel == kTofClst)           mp = &mTofClsttoCand;
        else if(sel == kTofHit1||sel==kTofHit2) mp = &mTofHittoCand;
        else if(sel == kRpcClst)           mp = &mRpcClsttoCand;
        else if(sel == kShowerHit)         mp = &mShowertoCand;
        else if(sel == kEmcClst)           mp = &mEmctoCand;
	else  {
	    Error("getSameMeta()","unknown Meta case!"); return 0;
	}
        map<Int_t,vector<HParticleCand*> >::iterator it = mp->find(metaind);
	if(it != mp->end()){
	    vector<HParticleCand*>& v = it->second;
	    for(UInt_t i = 0 ; i < v.size(); i++){
		if(v[i] != cand) {  
		    if(flag == 0 ) candidates.push_back(v[i]);
		    else {
			Bool_t fl = kFALSE;
			if(!isReference) fl=HParticleTool::evalPairsFlags(fl,cand,v[i]);
			else             fl=HParticleTool::evalPairsFlags(fl,v[i],cand);
			if(fl){
			    candidates.push_back(v[i]);
			}
		    }
		}
	    } 
	} else return -1;
    } 
    return candidates.size();
}
void  HParticlePairMaker::plotPairCaseStat()
{
    
    
    TCanvas* c = new TCanvas("pairCase","pairCase",1500,800);
    c->SetGridx();
    c->SetGridy();
    c->SetBottomMargin(0.15);
    UInt_t bins = fCaseVec.size();
    TH1F* h = new TH1F("h","",bins,0,bins);
    h->SetLineColor(kRed);
    h->SetLineWidth(3);
    h->SetYTitle("Fraction of pairs [%]");
    h->GetXaxis()->SetNdivisions(100+bins);
    h->GetXaxis()->SetLabelSize(0);
    h->GetYaxis()->SetRangeUser(0.,50.);
    Float_t sum = 0;
    for(UInt_t i=0;i<bins;i++)  sum+=fCaseCt[i];
    cout<<"Pairs Cases for Leptons :"<<endl;
    for(UInt_t i=0;i<bins;i++){
	Float_t frac = 0;
	if(sum != 0) frac = (fCaseCt[i]/sum)*100.;
        if(sum !=0 ) h->Fill(i,frac);
	cout<<Form("case%2i : ",i+1)<<setw(15)<< frac << " cts "<<setw(15)<<fCaseCt[i]<<endl;
    }
    h->Draw();
    Double_t offsetX  = 0.25;
    Double_t offsetY  =   -8;
    Double_t scaleX   = 1.;
    Double_t scaleY   = 1.;
    HParticlePairDraw pairdraw;
    for(UInt_t i=0; i < bins; i++){
	pairdraw.drawPair(offsetX+i,offsetY,scaleX,scaleY,fCaseVec[i],Form("Case%i",i+1),"");
    }
    cout<<"sum "<<sum<< " check " <<richCandCt<<endl;
}
 hparticlepairmaker.cc:100  hparticlepairmaker.cc:101  hparticlepairmaker.cc:102  hparticlepairmaker.cc:103  hparticlepairmaker.cc:104  hparticlepairmaker.cc:105  hparticlepairmaker.cc:106  hparticlepairmaker.cc:107  hparticlepairmaker.cc:108  hparticlepairmaker.cc:109  hparticlepairmaker.cc:110  hparticlepairmaker.cc:111  hparticlepairmaker.cc:112  hparticlepairmaker.cc:113  hparticlepairmaker.cc:114  hparticlepairmaker.cc:115  hparticlepairmaker.cc:116  hparticlepairmaker.cc:117  hparticlepairmaker.cc:118  hparticlepairmaker.cc:119  hparticlepairmaker.cc:120  hparticlepairmaker.cc:121  hparticlepairmaker.cc:122  hparticlepairmaker.cc:123  hparticlepairmaker.cc:124  hparticlepairmaker.cc:125  hparticlepairmaker.cc:126  hparticlepairmaker.cc:127  hparticlepairmaker.cc:128  hparticlepairmaker.cc:129  hparticlepairmaker.cc:130  hparticlepairmaker.cc:131  hparticlepairmaker.cc:132  hparticlepairmaker.cc:133  hparticlepairmaker.cc:134  hparticlepairmaker.cc:135  hparticlepairmaker.cc:136  hparticlepairmaker.cc:137  hparticlepairmaker.cc:138  hparticlepairmaker.cc:139  hparticlepairmaker.cc:140  hparticlepairmaker.cc:141  hparticlepairmaker.cc:142  hparticlepairmaker.cc:143  hparticlepairmaker.cc:144  hparticlepairmaker.cc:145  hparticlepairmaker.cc:146  hparticlepairmaker.cc:147  hparticlepairmaker.cc:148  hparticlepairmaker.cc:149  hparticlepairmaker.cc:150  hparticlepairmaker.cc:151  hparticlepairmaker.cc:152  hparticlepairmaker.cc:153  hparticlepairmaker.cc:154  hparticlepairmaker.cc:155  hparticlepairmaker.cc:156  hparticlepairmaker.cc:157  hparticlepairmaker.cc:158  hparticlepairmaker.cc:159  hparticlepairmaker.cc:160  hparticlepairmaker.cc:161  hparticlepairmaker.cc:162  hparticlepairmaker.cc:163  hparticlepairmaker.cc:164  hparticlepairmaker.cc:165  hparticlepairmaker.cc:166  hparticlepairmaker.cc:167  hparticlepairmaker.cc:168  hparticlepairmaker.cc:169  hparticlepairmaker.cc:170  hparticlepairmaker.cc:171  hparticlepairmaker.cc:172  hparticlepairmaker.cc:173  hparticlepairmaker.cc:174  hparticlepairmaker.cc:175  hparticlepairmaker.cc:176  hparticlepairmaker.cc:177  hparticlepairmaker.cc:178  hparticlepairmaker.cc:179  hparticlepairmaker.cc:180  hparticlepairmaker.cc:181  hparticlepairmaker.cc:182  hparticlepairmaker.cc:183  hparticlepairmaker.cc:184  hparticlepairmaker.cc:185  hparticlepairmaker.cc:186  hparticlepairmaker.cc:187  hparticlepairmaker.cc:188  hparticlepairmaker.cc:189  hparticlepairmaker.cc:190  hparticlepairmaker.cc:191  hparticlepairmaker.cc:192  hparticlepairmaker.cc:193  hparticlepairmaker.cc:194  hparticlepairmaker.cc:195  hparticlepairmaker.cc:196  hparticlepairmaker.cc:197  hparticlepairmaker.cc:198  hparticlepairmaker.cc:199  hparticlepairmaker.cc:200  hparticlepairmaker.cc:201  hparticlepairmaker.cc:202  hparticlepairmaker.cc:203  hparticlepairmaker.cc:204  hparticlepairmaker.cc:205  hparticlepairmaker.cc:206  hparticlepairmaker.cc:207  hparticlepairmaker.cc:208  hparticlepairmaker.cc:209  hparticlepairmaker.cc:210  hparticlepairmaker.cc:211  hparticlepairmaker.cc:212  hparticlepairmaker.cc:213  hparticlepairmaker.cc:214  hparticlepairmaker.cc:215  hparticlepairmaker.cc:216  hparticlepairmaker.cc:217  hparticlepairmaker.cc:218  hparticlepairmaker.cc:219  hparticlepairmaker.cc:220  hparticlepairmaker.cc:221  hparticlepairmaker.cc:222  hparticlepairmaker.cc:223  hparticlepairmaker.cc:224  hparticlepairmaker.cc:225  hparticlepairmaker.cc:226  hparticlepairmaker.cc:227  hparticlepairmaker.cc:228  hparticlepairmaker.cc:229  hparticlepairmaker.cc:230  hparticlepairmaker.cc:231  hparticlepairmaker.cc:232  hparticlepairmaker.cc:233  hparticlepairmaker.cc:234  hparticlepairmaker.cc:235  hparticlepairmaker.cc:236  hparticlepairmaker.cc:237  hparticlepairmaker.cc:238  hparticlepairmaker.cc:239  hparticlepairmaker.cc:240  hparticlepairmaker.cc:241  hparticlepairmaker.cc:242  hparticlepairmaker.cc:243  hparticlepairmaker.cc:244  hparticlepairmaker.cc:245  hparticlepairmaker.cc:246  hparticlepairmaker.cc:247  hparticlepairmaker.cc:248  hparticlepairmaker.cc:249  hparticlepairmaker.cc:250  hparticlepairmaker.cc:251  hparticlepairmaker.cc:252  hparticlepairmaker.cc:253  hparticlepairmaker.cc:254  hparticlepairmaker.cc:255  hparticlepairmaker.cc:256  hparticlepairmaker.cc:257  hparticlepairmaker.cc:258  hparticlepairmaker.cc:259  hparticlepairmaker.cc:260  hparticlepairmaker.cc:261  hparticlepairmaker.cc:262  hparticlepairmaker.cc:263  hparticlepairmaker.cc:264  hparticlepairmaker.cc:265  hparticlepairmaker.cc:266  hparticlepairmaker.cc:267  hparticlepairmaker.cc:268  hparticlepairmaker.cc:269  hparticlepairmaker.cc:270  hparticlepairmaker.cc:271  hparticlepairmaker.cc:272  hparticlepairmaker.cc:273  hparticlepairmaker.cc:274  hparticlepairmaker.cc:275  hparticlepairmaker.cc:276  hparticlepairmaker.cc:277  hparticlepairmaker.cc:278  hparticlepairmaker.cc:279  hparticlepairmaker.cc:280  hparticlepairmaker.cc:281  hparticlepairmaker.cc:282  hparticlepairmaker.cc:283  hparticlepairmaker.cc:284  hparticlepairmaker.cc:285  hparticlepairmaker.cc:286  hparticlepairmaker.cc:287  hparticlepairmaker.cc:288  hparticlepairmaker.cc:289  hparticlepairmaker.cc:290  hparticlepairmaker.cc:291  hparticlepairmaker.cc:292  hparticlepairmaker.cc:293  hparticlepairmaker.cc:294  hparticlepairmaker.cc:295  hparticlepairmaker.cc:296  hparticlepairmaker.cc:297  hparticlepairmaker.cc:298  hparticlepairmaker.cc:299  hparticlepairmaker.cc:300  hparticlepairmaker.cc:301  hparticlepairmaker.cc:302  hparticlepairmaker.cc:303  hparticlepairmaker.cc:304  hparticlepairmaker.cc:305  hparticlepairmaker.cc:306  hparticlepairmaker.cc:307  hparticlepairmaker.cc:308  hparticlepairmaker.cc:309  hparticlepairmaker.cc:310  hparticlepairmaker.cc:311  hparticlepairmaker.cc:312  hparticlepairmaker.cc:313  hparticlepairmaker.cc:314  hparticlepairmaker.cc:315  hparticlepairmaker.cc:316  hparticlepairmaker.cc:317  hparticlepairmaker.cc:318  hparticlepairmaker.cc:319  hparticlepairmaker.cc:320  hparticlepairmaker.cc:321  hparticlepairmaker.cc:322  hparticlepairmaker.cc:323  hparticlepairmaker.cc:324  hparticlepairmaker.cc:325  hparticlepairmaker.cc:326  hparticlepairmaker.cc:327  hparticlepairmaker.cc:328  hparticlepairmaker.cc:329  hparticlepairmaker.cc:330  hparticlepairmaker.cc:331  hparticlepairmaker.cc:332  hparticlepairmaker.cc:333  hparticlepairmaker.cc:334  hparticlepairmaker.cc:335  hparticlepairmaker.cc:336  hparticlepairmaker.cc:337  hparticlepairmaker.cc:338  hparticlepairmaker.cc:339  hparticlepairmaker.cc:340  hparticlepairmaker.cc:341  hparticlepairmaker.cc:342  hparticlepairmaker.cc:343  hparticlepairmaker.cc:344  hparticlepairmaker.cc:345  hparticlepairmaker.cc:346  hparticlepairmaker.cc:347  hparticlepairmaker.cc:348  hparticlepairmaker.cc:349  hparticlepairmaker.cc:350  hparticlepairmaker.cc:351  hparticlepairmaker.cc:352  hparticlepairmaker.cc:353  hparticlepairmaker.cc:354  hparticlepairmaker.cc:355  hparticlepairmaker.cc:356  hparticlepairmaker.cc:357  hparticlepairmaker.cc:358  hparticlepairmaker.cc:359  hparticlepairmaker.cc:360  hparticlepairmaker.cc:361  hparticlepairmaker.cc:362  hparticlepairmaker.cc:363  hparticlepairmaker.cc:364  hparticlepairmaker.cc:365  hparticlepairmaker.cc:366  hparticlepairmaker.cc:367  hparticlepairmaker.cc:368  hparticlepairmaker.cc:369  hparticlepairmaker.cc:370  hparticlepairmaker.cc:371  hparticlepairmaker.cc:372  hparticlepairmaker.cc:373  hparticlepairmaker.cc:374  hparticlepairmaker.cc:375  hparticlepairmaker.cc:376  hparticlepairmaker.cc:377  hparticlepairmaker.cc:378  hparticlepairmaker.cc:379  hparticlepairmaker.cc:380  hparticlepairmaker.cc:381  hparticlepairmaker.cc:382  hparticlepairmaker.cc:383  hparticlepairmaker.cc:384  hparticlepairmaker.cc:385  hparticlepairmaker.cc:386  hparticlepairmaker.cc:387  hparticlepairmaker.cc:388  hparticlepairmaker.cc:389  hparticlepairmaker.cc:390  hparticlepairmaker.cc:391  hparticlepairmaker.cc:392  hparticlepairmaker.cc:393  hparticlepairmaker.cc:394  hparticlepairmaker.cc:395  hparticlepairmaker.cc:396  hparticlepairmaker.cc:397  hparticlepairmaker.cc:398  hparticlepairmaker.cc:399  hparticlepairmaker.cc:400  hparticlepairmaker.cc:401  hparticlepairmaker.cc:402  hparticlepairmaker.cc:403  hparticlepairmaker.cc:404  hparticlepairmaker.cc:405  hparticlepairmaker.cc:406  hparticlepairmaker.cc:407  hparticlepairmaker.cc:408  hparticlepairmaker.cc:409  hparticlepairmaker.cc:410  hparticlepairmaker.cc:411  hparticlepairmaker.cc:412  hparticlepairmaker.cc:413  hparticlepairmaker.cc:414  hparticlepairmaker.cc:415  hparticlepairmaker.cc:416  hparticlepairmaker.cc:417  hparticlepairmaker.cc:418  hparticlepairmaker.cc:419  hparticlepairmaker.cc:420  hparticlepairmaker.cc:421  hparticlepairmaker.cc:422  hparticlepairmaker.cc:423  hparticlepairmaker.cc:424  hparticlepairmaker.cc:425  hparticlepairmaker.cc:426  hparticlepairmaker.cc:427  hparticlepairmaker.cc:428  hparticlepairmaker.cc:429  hparticlepairmaker.cc:430  hparticlepairmaker.cc:431  hparticlepairmaker.cc:432  hparticlepairmaker.cc:433  hparticlepairmaker.cc:434  hparticlepairmaker.cc:435  hparticlepairmaker.cc:436  hparticlepairmaker.cc:437  hparticlepairmaker.cc:438  hparticlepairmaker.cc:439  hparticlepairmaker.cc:440  hparticlepairmaker.cc:441  hparticlepairmaker.cc:442  hparticlepairmaker.cc:443  hparticlepairmaker.cc:444  hparticlepairmaker.cc:445  hparticlepairmaker.cc:446  hparticlepairmaker.cc:447  hparticlepairmaker.cc:448  hparticlepairmaker.cc:449  hparticlepairmaker.cc:450  hparticlepairmaker.cc:451  hparticlepairmaker.cc:452  hparticlepairmaker.cc:453  hparticlepairmaker.cc:454  hparticlepairmaker.cc:455  hparticlepairmaker.cc:456  hparticlepairmaker.cc:457  hparticlepairmaker.cc:458  hparticlepairmaker.cc:459  hparticlepairmaker.cc:460  hparticlepairmaker.cc:461  hparticlepairmaker.cc:462  hparticlepairmaker.cc:463  hparticlepairmaker.cc:464  hparticlepairmaker.cc:465  hparticlepairmaker.cc:466  hparticlepairmaker.cc:467  hparticlepairmaker.cc:468  hparticlepairmaker.cc:469  hparticlepairmaker.cc:470  hparticlepairmaker.cc:471  hparticlepairmaker.cc:472  hparticlepairmaker.cc:473  hparticlepairmaker.cc:474  hparticlepairmaker.cc:475  hparticlepairmaker.cc:476  hparticlepairmaker.cc:477  hparticlepairmaker.cc:478  hparticlepairmaker.cc:479  hparticlepairmaker.cc:480  hparticlepairmaker.cc:481  hparticlepairmaker.cc:482  hparticlepairmaker.cc:483  hparticlepairmaker.cc:484  hparticlepairmaker.cc:485  hparticlepairmaker.cc:486  hparticlepairmaker.cc:487  hparticlepairmaker.cc:488  hparticlepairmaker.cc:489  hparticlepairmaker.cc:490  hparticlepairmaker.cc:491  hparticlepairmaker.cc:492  hparticlepairmaker.cc:493  hparticlepairmaker.cc:494  hparticlepairmaker.cc:495  hparticlepairmaker.cc:496  hparticlepairmaker.cc:497  hparticlepairmaker.cc:498  hparticlepairmaker.cc:499  hparticlepairmaker.cc:500  hparticlepairmaker.cc:501  hparticlepairmaker.cc:502  hparticlepairmaker.cc:503  hparticlepairmaker.cc:504  hparticlepairmaker.cc:505  hparticlepairmaker.cc:506  hparticlepairmaker.cc:507  hparticlepairmaker.cc:508  hparticlepairmaker.cc:509  hparticlepairmaker.cc:510  hparticlepairmaker.cc:511  hparticlepairmaker.cc:512  hparticlepairmaker.cc:513  hparticlepairmaker.cc:514  hparticlepairmaker.cc:515  hparticlepairmaker.cc:516  hparticlepairmaker.cc:517  hparticlepairmaker.cc:518  hparticlepairmaker.cc:519  hparticlepairmaker.cc:520  hparticlepairmaker.cc:521  hparticlepairmaker.cc:522  hparticlepairmaker.cc:523  hparticlepairmaker.cc:524  hparticlepairmaker.cc:525  hparticlepairmaker.cc:526  hparticlepairmaker.cc:527  hparticlepairmaker.cc:528  hparticlepairmaker.cc:529  hparticlepairmaker.cc:530  hparticlepairmaker.cc:531  hparticlepairmaker.cc:532  hparticlepairmaker.cc:533  hparticlepairmaker.cc:534  hparticlepairmaker.cc:535  hparticlepairmaker.cc:536  hparticlepairmaker.cc:537  hparticlepairmaker.cc:538  hparticlepairmaker.cc:539  hparticlepairmaker.cc:540  hparticlepairmaker.cc:541  hparticlepairmaker.cc:542  hparticlepairmaker.cc:543  hparticlepairmaker.cc:544  hparticlepairmaker.cc:545  hparticlepairmaker.cc:546  hparticlepairmaker.cc:547  hparticlepairmaker.cc:548  hparticlepairmaker.cc:549  hparticlepairmaker.cc:550  hparticlepairmaker.cc:551  hparticlepairmaker.cc:552  hparticlepairmaker.cc:553  hparticlepairmaker.cc:554  hparticlepairmaker.cc:555  hparticlepairmaker.cc:556  hparticlepairmaker.cc:557  hparticlepairmaker.cc:558  hparticlepairmaker.cc:559  hparticlepairmaker.cc:560  hparticlepairmaker.cc:561  hparticlepairmaker.cc:562  hparticlepairmaker.cc:563  hparticlepairmaker.cc:564  hparticlepairmaker.cc:565  hparticlepairmaker.cc:566  hparticlepairmaker.cc:567  hparticlepairmaker.cc:568  hparticlepairmaker.cc:569  hparticlepairmaker.cc:570  hparticlepairmaker.cc:571  hparticlepairmaker.cc:572  hparticlepairmaker.cc:573  hparticlepairmaker.cc:574  hparticlepairmaker.cc:575  hparticlepairmaker.cc:576  hparticlepairmaker.cc:577  hparticlepairmaker.cc:578  hparticlepairmaker.cc:579  hparticlepairmaker.cc:580  hparticlepairmaker.cc:581  hparticlepairmaker.cc:582  hparticlepairmaker.cc:583  hparticlepairmaker.cc:584  hparticlepairmaker.cc:585  hparticlepairmaker.cc:586  hparticlepairmaker.cc:587  hparticlepairmaker.cc:588  hparticlepairmaker.cc:589  hparticlepairmaker.cc:590  hparticlepairmaker.cc:591  hparticlepairmaker.cc:592  hparticlepairmaker.cc:593  hparticlepairmaker.cc:594  hparticlepairmaker.cc:595  hparticlepairmaker.cc:596  hparticlepairmaker.cc:597  hparticlepairmaker.cc:598  hparticlepairmaker.cc:599  hparticlepairmaker.cc:600  hparticlepairmaker.cc:601  hparticlepairmaker.cc:602  hparticlepairmaker.cc:603  hparticlepairmaker.cc:604  hparticlepairmaker.cc:605  hparticlepairmaker.cc:606  hparticlepairmaker.cc:607  hparticlepairmaker.cc:608  hparticlepairmaker.cc:609  hparticlepairmaker.cc:610  hparticlepairmaker.cc:611  hparticlepairmaker.cc:612  hparticlepairmaker.cc:613  hparticlepairmaker.cc:614  hparticlepairmaker.cc:615  hparticlepairmaker.cc:616  hparticlepairmaker.cc:617  hparticlepairmaker.cc:618  hparticlepairmaker.cc:619  hparticlepairmaker.cc:620  hparticlepairmaker.cc:621  hparticlepairmaker.cc:622  hparticlepairmaker.cc:623  hparticlepairmaker.cc:624  hparticlepairmaker.cc:625  hparticlepairmaker.cc:626  hparticlepairmaker.cc:627  hparticlepairmaker.cc:628  hparticlepairmaker.cc:629  hparticlepairmaker.cc:630  hparticlepairmaker.cc:631  hparticlepairmaker.cc:632  hparticlepairmaker.cc:633  hparticlepairmaker.cc:634  hparticlepairmaker.cc:635  hparticlepairmaker.cc:636  hparticlepairmaker.cc:637  hparticlepairmaker.cc:638  hparticlepairmaker.cc:639  hparticlepairmaker.cc:640  hparticlepairmaker.cc:641  hparticlepairmaker.cc:642  hparticlepairmaker.cc:643  hparticlepairmaker.cc:644  hparticlepairmaker.cc:645  hparticlepairmaker.cc:646  hparticlepairmaker.cc:647  hparticlepairmaker.cc:648  hparticlepairmaker.cc:649  hparticlepairmaker.cc:650  hparticlepairmaker.cc:651  hparticlepairmaker.cc:652  hparticlepairmaker.cc:653  hparticlepairmaker.cc:654  hparticlepairmaker.cc:655  hparticlepairmaker.cc:656  hparticlepairmaker.cc:657  hparticlepairmaker.cc:658  hparticlepairmaker.cc:659  hparticlepairmaker.cc:660  hparticlepairmaker.cc:661  hparticlepairmaker.cc:662  hparticlepairmaker.cc:663  hparticlepairmaker.cc:664  hparticlepairmaker.cc:665  hparticlepairmaker.cc:666  hparticlepairmaker.cc:667  hparticlepairmaker.cc:668  hparticlepairmaker.cc:669  hparticlepairmaker.cc:670  hparticlepairmaker.cc:671  hparticlepairmaker.cc:672  hparticlepairmaker.cc:673  hparticlepairmaker.cc:674  hparticlepairmaker.cc:675  hparticlepairmaker.cc:676  hparticlepairmaker.cc:677  hparticlepairmaker.cc:678  hparticlepairmaker.cc:679  hparticlepairmaker.cc:680  hparticlepairmaker.cc:681  hparticlepairmaker.cc:682  hparticlepairmaker.cc:683  hparticlepairmaker.cc:684  hparticlepairmaker.cc:685  hparticlepairmaker.cc:686  hparticlepairmaker.cc:687  hparticlepairmaker.cc:688  hparticlepairmaker.cc:689  hparticlepairmaker.cc:690  hparticlepairmaker.cc:691  hparticlepairmaker.cc:692  hparticlepairmaker.cc:693  hparticlepairmaker.cc:694  hparticlepairmaker.cc:695  hparticlepairmaker.cc:696  hparticlepairmaker.cc:697  hparticlepairmaker.cc:698  hparticlepairmaker.cc:699  hparticlepairmaker.cc:700  hparticlepairmaker.cc:701  hparticlepairmaker.cc:702  hparticlepairmaker.cc:703  hparticlepairmaker.cc:704  hparticlepairmaker.cc:705  hparticlepairmaker.cc:706  hparticlepairmaker.cc:707  hparticlepairmaker.cc:708  hparticlepairmaker.cc:709  hparticlepairmaker.cc:710  hparticlepairmaker.cc:711  hparticlepairmaker.cc:712  hparticlepairmaker.cc:713  hparticlepairmaker.cc:714  hparticlepairmaker.cc:715  hparticlepairmaker.cc:716  hparticlepairmaker.cc:717  hparticlepairmaker.cc:718  hparticlepairmaker.cc:719  hparticlepairmaker.cc:720  hparticlepairmaker.cc:721  hparticlepairmaker.cc:722  hparticlepairmaker.cc:723  hparticlepairmaker.cc:724  hparticlepairmaker.cc:725  hparticlepairmaker.cc:726  hparticlepairmaker.cc:727  hparticlepairmaker.cc:728  hparticlepairmaker.cc:729  hparticlepairmaker.cc:730  hparticlepairmaker.cc:731  hparticlepairmaker.cc:732  hparticlepairmaker.cc:733  hparticlepairmaker.cc:734  hparticlepairmaker.cc:735  hparticlepairmaker.cc:736  hparticlepairmaker.cc:737  hparticlepairmaker.cc:738  hparticlepairmaker.cc:739  hparticlepairmaker.cc:740  hparticlepairmaker.cc:741  hparticlepairmaker.cc:742  hparticlepairmaker.cc:743  hparticlepairmaker.cc:744  hparticlepairmaker.cc:745  hparticlepairmaker.cc:746  hparticlepairmaker.cc:747  hparticlepairmaker.cc:748  hparticlepairmaker.cc:749  hparticlepairmaker.cc:750  hparticlepairmaker.cc:751  hparticlepairmaker.cc:752  hparticlepairmaker.cc:753  hparticlepairmaker.cc:754  hparticlepairmaker.cc:755  hparticlepairmaker.cc:756  hparticlepairmaker.cc:757  hparticlepairmaker.cc:758  hparticlepairmaker.cc:759  hparticlepairmaker.cc:760  hparticlepairmaker.cc:761  hparticlepairmaker.cc:762  hparticlepairmaker.cc:763  hparticlepairmaker.cc:764  hparticlepairmaker.cc:765  hparticlepairmaker.cc:766  hparticlepairmaker.cc:767  hparticlepairmaker.cc:768  hparticlepairmaker.cc:769  hparticlepairmaker.cc:770  hparticlepairmaker.cc:771  hparticlepairmaker.cc:772  hparticlepairmaker.cc:773  hparticlepairmaker.cc:774  hparticlepairmaker.cc:775  hparticlepairmaker.cc:776  hparticlepairmaker.cc:777  hparticlepairmaker.cc:778  hparticlepairmaker.cc:779  hparticlepairmaker.cc:780  hparticlepairmaker.cc:781  hparticlepairmaker.cc:782  hparticlepairmaker.cc:783  hparticlepairmaker.cc:784  hparticlepairmaker.cc:785  hparticlepairmaker.cc:786  hparticlepairmaker.cc:787  hparticlepairmaker.cc:788  hparticlepairmaker.cc:789  hparticlepairmaker.cc:790  hparticlepairmaker.cc:791  hparticlepairmaker.cc:792  hparticlepairmaker.cc:793  hparticlepairmaker.cc:794  hparticlepairmaker.cc:795  hparticlepairmaker.cc:796  hparticlepairmaker.cc:797  hparticlepairmaker.cc:798  hparticlepairmaker.cc:799  hparticlepairmaker.cc:800  hparticlepairmaker.cc:801  hparticlepairmaker.cc:802  hparticlepairmaker.cc:803  hparticlepairmaker.cc:804  hparticlepairmaker.cc:805  hparticlepairmaker.cc:806  hparticlepairmaker.cc:807  hparticlepairmaker.cc:808  hparticlepairmaker.cc:809  hparticlepairmaker.cc:810  hparticlepairmaker.cc:811  hparticlepairmaker.cc:812  hparticlepairmaker.cc:813  hparticlepairmaker.cc:814  hparticlepairmaker.cc:815  hparticlepairmaker.cc:816  hparticlepairmaker.cc:817  hparticlepairmaker.cc:818  hparticlepairmaker.cc:819  hparticlepairmaker.cc:820  hparticlepairmaker.cc:821  hparticlepairmaker.cc:822  hparticlepairmaker.cc:823  hparticlepairmaker.cc:824  hparticlepairmaker.cc:825  hparticlepairmaker.cc:826  hparticlepairmaker.cc:827  hparticlepairmaker.cc:828  hparticlepairmaker.cc:829  hparticlepairmaker.cc:830  hparticlepairmaker.cc:831  hparticlepairmaker.cc:832  hparticlepairmaker.cc:833  hparticlepairmaker.cc:834  hparticlepairmaker.cc:835  hparticlepairmaker.cc:836  hparticlepairmaker.cc:837  hparticlepairmaker.cc:838  hparticlepairmaker.cc:839  hparticlepairmaker.cc:840  hparticlepairmaker.cc:841  hparticlepairmaker.cc:842  hparticlepairmaker.cc:843  hparticlepairmaker.cc:844  hparticlepairmaker.cc:845  hparticlepairmaker.cc:846  hparticlepairmaker.cc:847  hparticlepairmaker.cc:848  hparticlepairmaker.cc:849  hparticlepairmaker.cc:850  hparticlepairmaker.cc:851  hparticlepairmaker.cc:852  hparticlepairmaker.cc:853  hparticlepairmaker.cc:854  hparticlepairmaker.cc:855  hparticlepairmaker.cc:856  hparticlepairmaker.cc:857  hparticlepairmaker.cc:858  hparticlepairmaker.cc:859  hparticlepairmaker.cc:860  hparticlepairmaker.cc:861  hparticlepairmaker.cc:862  hparticlepairmaker.cc:863  hparticlepairmaker.cc:864  hparticlepairmaker.cc:865  hparticlepairmaker.cc:866  hparticlepairmaker.cc:867  hparticlepairmaker.cc:868  hparticlepairmaker.cc:869  hparticlepairmaker.cc:870  hparticlepairmaker.cc:871  hparticlepairmaker.cc:872  hparticlepairmaker.cc:873  hparticlepairmaker.cc:874  hparticlepairmaker.cc:875  hparticlepairmaker.cc:876  hparticlepairmaker.cc:877  hparticlepairmaker.cc:878  hparticlepairmaker.cc:879  hparticlepairmaker.cc:880  hparticlepairmaker.cc:881  hparticlepairmaker.cc:882  hparticlepairmaker.cc:883  hparticlepairmaker.cc:884  hparticlepairmaker.cc:885  hparticlepairmaker.cc:886  hparticlepairmaker.cc:887  hparticlepairmaker.cc:888  hparticlepairmaker.cc:889  hparticlepairmaker.cc:890  hparticlepairmaker.cc:891  hparticlepairmaker.cc:892  hparticlepairmaker.cc:893  hparticlepairmaker.cc:894  hparticlepairmaker.cc:895  hparticlepairmaker.cc:896  hparticlepairmaker.cc:897  hparticlepairmaker.cc:898  hparticlepairmaker.cc:899  hparticlepairmaker.cc:900  hparticlepairmaker.cc:901  hparticlepairmaker.cc:902  hparticlepairmaker.cc:903  hparticlepairmaker.cc:904  hparticlepairmaker.cc:905  hparticlepairmaker.cc:906  hparticlepairmaker.cc:907  hparticlepairmaker.cc:908  hparticlepairmaker.cc:909  hparticlepairmaker.cc:910  hparticlepairmaker.cc:911  hparticlepairmaker.cc:912  hparticlepairmaker.cc:913  hparticlepairmaker.cc:914  hparticlepairmaker.cc:915  hparticlepairmaker.cc:916  hparticlepairmaker.cc:917  hparticlepairmaker.cc:918  hparticlepairmaker.cc:919  hparticlepairmaker.cc:920  hparticlepairmaker.cc:921  hparticlepairmaker.cc:922  hparticlepairmaker.cc:923  hparticlepairmaker.cc:924  hparticlepairmaker.cc:925  hparticlepairmaker.cc:926  hparticlepairmaker.cc:927  hparticlepairmaker.cc:928  hparticlepairmaker.cc:929  hparticlepairmaker.cc:930  hparticlepairmaker.cc:931  hparticlepairmaker.cc:932  hparticlepairmaker.cc:933  hparticlepairmaker.cc:934  hparticlepairmaker.cc:935  hparticlepairmaker.cc:936  hparticlepairmaker.cc:937  hparticlepairmaker.cc:938  hparticlepairmaker.cc:939  hparticlepairmaker.cc:940  hparticlepairmaker.cc:941  hparticlepairmaker.cc:942  hparticlepairmaker.cc:943  hparticlepairmaker.cc:944  hparticlepairmaker.cc:945  hparticlepairmaker.cc:946  hparticlepairmaker.cc:947  hparticlepairmaker.cc:948  hparticlepairmaker.cc:949  hparticlepairmaker.cc:950  hparticlepairmaker.cc:951