ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include "TObjArray.h"
#include "TFile.h"
#include "TTree.h"
#include "TH1F.h"
#include "TBits.h"
#include "../ITS/UPGRADE/AliITSUClusterPix.h"
#include "../ITS/UPGRADE/AliITSURecoLayer.h"
#include "../ITS/UPGRADE/AliITSURecoDet.h"
#include "../ITS/UPGRADE/AliITSUHit.h"
#include "../ITS/UPGRADE/AliITSUGeomTGeo.h"
#include "AliITSsegmentation.h"
#include "AliGeomManager.h"
#include "AliStack.h"
#include "AliLoader.h"
#include "AliCDBManager.h"

#include "TROOT.h"
#include "TStyle.h"
#include "TGeoMatrix.h"
#include "TParticle.h"
#include "TCanvas.h"
#include "TPaveStats.h"
#include "TClonesArray.h"

#endif

TObjArray *pattDB=0;
TVectorF*  pattFR=0;
TVectorF*  xCentrePix=0;
TVectorF*  zCentrePix=0;
TVectorF*  xCentreShift=0;
TVectorF*  zCentreShift=0;
TObjArray histoArr;
enum {kNPixAll=0,kNPixSPL=1,kDR=0,kDTXodd,kDTXeven,kDTZ, kDTXoddSPL,kDTXevenSPL,kDTZSPL};

TPaveStats* GetStPad(TH1* hst);
TPaveStats* SetStPadPos(TH1* hst,float x1,float x2,float y1,float y2, Int_t stl=-1,Int_t col=-1);
TCanvas* DrawNP(int np, TObjArray* harr=0, TCanvas* cnv=0);
TH1* GetHistoClSize(int npix,int id,TObjArray* harr=0);
void DrawReport(const char* psname, TObjArray* harr=0);
void LoadDB(const char* fname);


typedef struct {
  Int_t evID;
  Int_t volID;
  Int_t lrID;
  Int_t clID;
  Int_t nPix;
  Int_t nX;
  Int_t nZ;
  Int_t q;
  Float_t pt;
  Float_t eta;
  Float_t phi;
  Float_t xyz[3];
  Float_t dX;
  Float_t dY;
  Float_t dZ;  
  Bool_t split;  
  Bool_t prim;
  Int_t  pdg;
  Int_t  ntr;
  Float_t alpha; // alpha is the angle in y-radius plane in local frame
  Float_t beta;  // beta is the angle in xz plane, taken from z axis, growing counterclockwise
  Int_t nRowPatt;
  Int_t nColPatt;
  Int_t pattID;
  Float_t freq;
  Float_t xCen;
  Float_t zCen;
  Float_t zShift;
  Float_t xShift;
} clSumm;

TBits clTop;

void SecondcompClusHits(int nev=-1)
{
  const int kSplit=0x1<<22;
  const int kSplCheck=0x1<<23;
  //
  gSystem->Load("libITSUpgradeBase");
  gSystem->Load("libITSUpgradeSim");
  gSystem->Load("libITSUpgradeRec");
  gROOT->SetStyle("Plain");

  AliCDBManager* man = AliCDBManager::Instance();
  man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  man->SetSpecificStorage("GRP/GRP/Data",
			  Form("local://%s",gSystem->pwd()));
  man->SetSpecificStorage("ITS/Align/Data",
			  Form("local://%s",gSystem->pwd()));
  man->SetSpecificStorage("ITS/Calib/RecoParam",
			  Form("local://%s",gSystem->pwd()));
  man->SetRun(0);


  gAlice=NULL;
  AliRunLoader* runLoader = AliRunLoader::Open("galice.root");
  runLoader->LoadgAlice();

  gAlice = runLoader->GetAliRun();

  runLoader->LoadHeader();
  runLoader->LoadKinematics();
  runLoader->LoadRecPoints();
  runLoader->LoadSDigits();
  runLoader->LoadHits();

  AliLoader *dl = runLoader->GetDetectorLoader("ITS");

  AliGeomManager::LoadGeometry("geometry.root");
  TObjArray algITS;
  AliGeomManager::LoadAlignObjsFromCDBSingleDet("ITS",algITS);
  AliGeomManager::ApplyAlignObjsToGeom(algITS);
  //
  AliITSUGeomTGeo* gm = new AliITSUGeomTGeo(kTRUE);
  AliITSUClusterPix::SetGeom(gm);
  //
  AliITSURecoDet *its = new AliITSURecoDet(gm, "ITSinterface");
  its->CreateClusterArrays();
  //
  Double_t xg1,yg1,zg1=0.,xg0,yg0,zg0=0.,tg0;
  Double_t xExit,yExit,zExit,xEnt,yEnt,zEnt,tof1;
  //
  TTree * cluTree = 0x0;
  TTree *hitTree = 0x0;
  TClonesArray *hitList=new TClonesArray("AliITSUHit");
  //
  TObjArray arrMCTracks; // array of hit arrays for each particle
  //
  Float_t xyzClGloF[3];
  Double_t xyzClGlo[3],xyzClTr[3];
  Int_t labels[3];
  int nLab = 0;
  int nlr=its->GetNLayersActive();
  int ntotev = (Int_t)runLoader->GetNumberOfEvents();
  printf("N Events : %i \n",ntotev);
  if (nev>0) ntotev = TMath::Min(nev,ntotev);
  //
  // load topology database
  LoadDB("clusterTopology.root");

  Int_t nPatterns = pattDB->GetEntriesFast();

  // output tree
  TFile* flOut = TFile::Open("clInfo.root","recreate");
  TTree* trOut = new TTree("clitsu","clitsu");
  clSumm cSum;
  trOut->Branch("evID", &cSum.evID ,"evID/I");
  trOut->Branch("volID",&cSum.volID,"volID/I");
  trOut->Branch("lrID", &cSum.lrID ,"lrID/I");  
  trOut->Branch("clID", &cSum.clID ,"clID/I");  
  trOut->Branch("nPix", &cSum.nPix ,"nPix/I");
  trOut->Branch("nX"  , &cSum.nX   ,"nX/I");
  trOut->Branch("nZ"  , &cSum.nZ   ,"nZ/I");
  trOut->Branch("q"   , &cSum.q    ,"q/I");
  trOut->Branch("pt"  , &cSum.pt   ,"pt/F");  
  trOut->Branch("eta"  ,&cSum.eta  ,"eta/F");  
  trOut->Branch("phi"  , &cSum.phi  ,"phi/F");  
  trOut->Branch("xyz",   cSum.xyz,  "xyz[3]/F");  
  trOut->Branch("dX"  , &cSum.dX   ,"dX/F");
  trOut->Branch("dY"  , &cSum.dY   ,"dY/F");
  trOut->Branch("dZ"  , &cSum.dZ   ,"dZ/F");  
  trOut->Branch("split",&cSum.split,"split/O");
  trOut->Branch("prim", &cSum.prim, "prim/O");
  trOut->Branch("pdg",  &cSum.pdg,  "pdg/I");
  trOut->Branch("ntr",  &cSum.ntr,  "ntr/I");
  trOut->Branch("alpha", &cSum.alpha, "alpha/F");
  trOut->Branch("beta", &cSum.beta, "beta/F");
  trOut->Branch("nRowPatt", &cSum.nRowPatt, "nRowPatt/I");
  trOut->Branch("nColPatt", &cSum.nColPatt, "nColPatt/I");
  trOut->Branch("pattID", &cSum.pattID,"pattID/I");
  trOut->Branch("freq", &cSum.freq, "freq/F");
  trOut->Branch("xCen", &cSum.xCen, "xCen/F");
  trOut->Branch("zCen", &cSum.zCen, "zCen/F");
  trOut->Branch("xShift", &cSum.xShift, "xShift/F");
  trOut->Branch("zShift", &cSum.zShift, "zShift/F");
  //
  for (Int_t iEvent = 0; iEvent < ntotev; iEvent++) {
    printf("\n Event %i \n",iEvent);
    runLoader->GetEvent(iEvent);
    AliStack *stack = runLoader->Stack();
    cluTree=dl->TreeR();
    hitTree=dl->TreeH();
    hitTree->SetBranchAddress("ITS",&hitList);
    // 
    // read clusters
    for (int ilr=nlr;ilr--;) {
      TBranch* br = cluTree->GetBranch(Form("ITSRecPoints%d",ilr));
      if (!br) {printf("Did not find cluster branch for lr %d\n",ilr); exit(1);}
      br->SetAddress(its->GetLayerActive(ilr)->GetClustersAddress());
    }
    cluTree->GetEntry(0); 
    its->ProcessClusters();
    //
    // read hits
    for(Int_t iEnt=0;iEnt<hitTree->GetEntries();iEnt++){//entries loop degli hits
      hitTree->GetEntry(iEnt);
      int nh = hitList->GetEntries();      
      for(Int_t iHit=0; iHit<nh;iHit++){
	     AliITSUHit *pHit = (AliITSUHit*)hitList->At(iHit);
	     int mcID = pHit->GetTrack();
	     TClonesArray* harr = arrMCTracks.GetEntriesFast()>mcID ? (TClonesArray*)arrMCTracks.At(mcID) : 0;
	     if (!harr) {
	       harr = new TClonesArray("AliITSUHit"); // 1st encounter of the MC track
	       arrMCTracks.AddAtAndExpand(harr,mcID);
	     }
	       //
	     new ( (*harr)[harr->GetEntriesFast()] ) AliITSUHit(*pHit);
      }
    }
    //
    // compare clusters and hits
    //
    printf(" tree entries: %lld\n",cluTree->GetEntries());
    //
    for (int ilr=0;ilr<nlr;ilr++) {
      AliITSURecoLayer* lr = its->GetLayerActive(ilr);
      TClonesArray* clr = lr->GetClusters();
      int nClu = clr->GetEntries();
      printf("Layer %d : %d clusters\n",ilr,nClu);
      //
      for (int icl=0;icl<nClu;icl++) {
	      AliITSUClusterPix *cl = (AliITSUClusterPix*)clr->At(icl);
	      int modID = cl->GetVolumeId();

        //Compare clusters with DB

        clTop.Clear();
        Int_t tempPattID=-1;
        Float_t tempFreq=0;
        Float_t tempxCen=0;
        Float_t tempzCen=0;
        Float_t tempxShift=0;
        Float_t tempzShift=0;
        UShort_t rs = cl->GetPatternRowSpan();
        UShort_t cs = cl->GetPatternColSpan();

        for(int ir=0; ir<rs; ir++)
          for(int ic=0; ic<cs; ic++)
            if(cl->TestPixel(ir,ic)) clTop.SetBitNumber(ir*cs+ic);//Set cluster pattern
        clTop.SetUniqueID((rs<<16)+cs);//Set cluster ID

        for(int iDB=0; iDB<nPatterns; iDB++){
          TBits* refPatt = (TBits*) pattDB->At(iDB);
          if (*refPatt == clTop && refPatt->GetUniqueID()== clTop.GetUniqueID()){
            tempPattID=iDB;
            tempFreq=(*pattFR)[iDB];
            tempxCen=(*xCentrePix)[iDB];
            tempzCen=(*zCentrePix)[iDB];
            tempxShift=(*xCentreShift)[iDB];
            tempzShift=(*zCentreShift)[iDB];
            break;
          }
        }   
	
	     //------------ check if this is a split cluster
	     if (!cl->TestBit(kSplCheck)) {
	       cl->SetBit(kSplCheck);
	       // check if there is no other cluster with same label on this module
	       AliITSURecoSens* sens = lr->GetSensorFromID(modID);
	       int nclSn = sens->GetNClusters();
	       int offs = sens->GetFirstClusterId();
	       //	printf("To check for %d (mod:%d) N=%d from %d\n",icl,modID,nclSn,offs);
	       for (int ics=0;ics<nclSn;ics++) {
	         AliITSUClusterPix* clusT = (AliITSUClusterPix*)lr->GetCluster(offs+ics); // access to clusters
	         if (clusT==cl) continue;
	         for (int ilb0=0;ilb0<3;ilb0++) {
	           int lb0 = cl->GetLabel(ilb0); if (lb0<=-1) break;
	           for (int ilb1=0;ilb1<3;ilb1++) {
		            int lb1 = clusT->GetLabel(ilb1); if (lb1<=-1) break;
		            if (lb1==lb0) {
		              cl->SetBit(kSplit);
		              clusT->SetBit(kSplit);
		              /*
		              printf("Discard clusters of module %d:\n",modID);
		              cl->Print();
		              clusT->Print();
		              */
		              break;
		            }
	            }
	          }
	        }
	      }
	     //------------
	     const AliITSsegmentation* segm = gm->GetSegmentation(ilr);
	     //
	     cl->GetGlobalXYZ(xyzClGloF);
	     int clsize = cl->GetNPix();
	     for (int i=3;i--;) xyzClGlo[i] = xyzClGloF[i];
	     const TGeoHMatrix* mat = gm->GetMatrixSens(modID);
	     if (!mat) {printf("failed to get matrix for module %d\n",cl->GetVolumeId());}
	     mat->MasterToLocal(xyzClGlo,xyzClTr);
	     //
	     int col,row;
	     segm->LocalToDet(xyzClTr[0],xyzClTr[2],row,col); // effective col/row
	     nLab = 0;
	     for (int il=0;il<3;il++) {
	       if (cl->GetLabel(il)>=0) labels[nLab++] = cl->GetLabel(il);
	       else break;
	      }
	      // find hit info
    	 for (int il=0;il<nLab;il++) {
    	   TClonesArray* htArr = (TClonesArray*)arrMCTracks.At(labels[il]);
    	   if (!htArr) {printf("did not find MChits for label %d ",labels[il]); cl->Print(); continue;}
    	   //
    	   int nh = htArr->GetEntriesFast();
    	   AliITSUHit *pHit=0;
    	   double dst2Max = 1e33;
    	   for (int ih=nh;ih--;) {
    	     AliITSUHit* tHit = (AliITSUHit*)htArr->At(ih);
    	     if (tHit->GetChip()!=modID) continue;
    	     tHit->GetPositionG(xg1,yg1,zg1);
    	     tHit->GetPositionG0(xg0,yg0,zg0,tg0);
    	     double gxyzHDif[3] = { (xg1+xg0)/2 - xyzClGlo[0], (yg1+yg0)/2 - xyzClGlo[1], (zg1+zg0)/2 - xyzClGlo[2] };
    	     double dst2 = gxyzHDif[0]*gxyzHDif[0] + gxyzHDif[1]*gxyzHDif[1] + gxyzHDif[2]*gxyzHDif[2];
    	     if (dst2<dst2Max) {
    	       pHit = tHit;
    	       dst2Max = dst2;
    	      }
    	    }
	        if (!pHit) {
	         printf("did not find MChit for label %d on module %d ",il,modID); 
	         cl->Print(); 
	         htArr->Print();
	         continue;
	        }
	        //
	        pHit->GetPositionG(xg1,yg1,zg1);
	        pHit->GetPositionG0(xg0,yg0,zg0,tg0);
	        //
	        double txyzH[3],gxyzH[3] = { (xg1+xg0)/2, (yg1+yg0)/2, (zg1+zg0)/2 };
	        mat->MasterToLocal(gxyzH,txyzH);
	        double rcl = TMath::Sqrt(xyzClTr[0]*xyzClTr[0]+xyzClTr[1]*xyzClTr[1]);
	        double rht = TMath::Sqrt(txyzH[0]*txyzH[0]+txyzH[1]*txyzH[1]);
	        //
          //
          //Angles determination

          pHit->GetPositionL(xExit,yExit,zExit);
          pHit->GetPositionL0(xEnt,yEnt,zEnt,tof1);

          Double_t dirHit[3]={(xExit-xEnt),(yExit-yEnt),(zExit-zEnt)};

          Double_t alpha1 = TMath::ACos(TMath::Abs(dirHit[1])/TMath::Sqrt(dirHit[0]*dirHit[0]+dirHit[1]*dirHit[1]+dirHit[2]*dirHit[2])); //Polar Angle
          Float_t alpha2 = (Float_t) alpha1; //convert to float
          cSum.alpha = alpha2;

          Double_t beta1;
          beta1 = TMath::ATan2(TMath::Abs(dirHit[0]),TMath::Abs(dirHit[2])); //Azimuthal angle, values from -Pi to Pi
          Float_t beta2 = (Float_t) beta1;
          cSum.beta = beta2;

	        GetHistoClSize(clsize,kDR,&histoArr)->Fill((rht-rcl)*1e4);
	        if (cl->TestBit(kSplit)) {
	          if (col%2) GetHistoClSize(clsize,kDTXoddSPL,&histoArr)->Fill((txyzH[0]-xyzClTr[0])*1e4);
	          else       GetHistoClSize(clsize,kDTXevenSPL,&histoArr)->Fill((txyzH[0]-xyzClTr[0])*1e4);
	          GetHistoClSize(clsize,kDTZSPL,&histoArr)->Fill((txyzH[2]-xyzClTr[2])*1e4);
	          GetHistoClSize(0,kNPixSPL,&histoArr)->Fill(clsize);
	        }
	        if (col%2) GetHistoClSize(clsize,kDTXodd,&histoArr)->Fill((txyzH[0]-xyzClTr[0])*1e4);
	        else       GetHistoClSize(clsize,kDTXeven,&histoArr)->Fill((txyzH[0]-xyzClTr[0])*1e4);
	        GetHistoClSize(clsize,kDTZ,&histoArr)->Fill((txyzH[2]-xyzClTr[2])*1e4);
	        GetHistoClSize(0,kNPixAll,&histoArr)->Fill(clsize);
	        //
	        cSum.evID = iEvent;
	        cSum.volID = cl->GetVolumeId();
      	  cSum.lrID = ilr;
      	  cSum.clID = icl;
      	  cSum.nPix = cl->GetNPix();
      	  cSum.nX   = cl->GetNx();
      	  cSum.nZ   = cl->GetNz();
      	  cSum.q    = cl->GetQ();
      	  cSum.split = cl->TestBit(kSplit);
      	  cSum.dX = (txyzH[0]-xyzClTr[0])*1e4;
      	  cSum.dY = (txyzH[1]-xyzClTr[1])*1e4;
      	  cSum.dZ = (txyzH[2]-xyzClTr[2])*1e4;
          cSum.nRowPatt = cl-> GetPatternRowSpan();
          cSum.nColPatt = cl-> GetPatternColSpan();
          cSum.pattID = tempPattID;
          cSum.freq = tempFreq;
          cSum.xCen = tempxCen;
          cSum.zCen = tempzCen;
          cSum.xShift = tempxShift;
          cSum.zShift = tempzShift;

      	  int label = cl->GetLabel(0);
      	  TParticle* part = 0;
      	  if (label>=0 && (part=stack->Particle(label)) ) {
      	    cSum.pdg = part->GetPdgCode();
      	    cSum.eta = part->Eta();
      	    cSum.pt  = part->Pt();
      	    cSum.phi = part->Phi();
	          cSum.prim = stack->IsPhysicalPrimary(label);
	        }
	        cSum.ntr = 0;
	        for (int ilb=0;ilb<3;ilb++) if (cl->GetLabel(ilb)>=0) cSum.ntr++;
	        for (int i=0;i<3;i++) cSum.xyz[i] = xyzClGloF[i];
	        //
	        trOut->Fill();
      	  /*
      	  if (clsize==5) {
      	    printf("\nL%d(%c) Mod%d, Cl:%d | %+5.1f %+5.1f (%d/%d)|H:%e %e %e | C:%e %e %e\n",ilr,cl->TestBit(kSplit) ? 'S':'N',
      		   modID,icl,(txyzH[0]-xyzClTr[0])*1e4,(txyzH[2]-xyzClTr[2])*1e4, row,col,
      		   gxyzH[0],gxyzH[1],gxyzH[2],xyzClGlo[0],xyzClGlo[1],xyzClGlo[2]);
      	    cl->Print();
      	    pHit->Print();
      	    //
      	    double a0,b0,c0,a1,b1,c1,e0;
      	    pHit->GetPositionL0(a0,b0,c0,e0);
      	    pHit->GetPositionL(a1,b1,c1);
      	    float cloc[3];
      	    cl->GetLocalXYZ(cloc);
      	    printf("LocH: %e %e %e | %e %e %e\n",a0,b0,c0,a1,b1,c1);
      	    printf("LocC: %e %e %e | %e %e %e\n",cloc[0],cloc[1],cloc[2],xyzClTr[0],xyzClTr[1],xyzClTr[2]);
      	  }
      	  */
      	  //
      	}
      }
    }
    
    //    layerClus.Clear();
    //
    arrMCTracks.Delete();
  }//event loop
  //
  flOut->cd();
  trOut->Write();
  delete trOut;
  flOut->Close();
  flOut->Delete();
  DrawReport("clinfo.ps",&histoArr);
  //
}

void DrawReport(const char* psname, TObjArray* harr) 
{
  gStyle->SetOptFit(1);
  if (!harr) harr = &histoArr;
  TCanvas* cnv = new TCanvas("cl","cl",900,600);
  //
  TString psnm1 = psname;
  if (psnm1.IsNull()) psnm1 = "clusters.ps";
  TString psnm0 = psnm1.Data(); 
  psnm0 += "[";
  TString psnm2 = psnm1.Data(); 
  psnm2 += "]";
  cnv->Print(psnm0.Data());
  //
  TH1* clall = GetHistoClSize(0,kNPixAll,harr);
  clall->SetLineColor(kRed);
  clall->Draw();
  TH1* clSpl = GetHistoClSize(0,kNPixSPL,harr);
  clSpl->SetLineColor(kBlue);
  clSpl->Draw("sames");
  gPad->Modified();
  gPad->Update();
  SetStPadPos(clall,0.75,0.97,0.8,1.,-1,clall->GetLineColor());
  SetStPadPos(clSpl,0.75,0.97,0.6,0.8,-1,clSpl->GetLineColor());
  gPad->Modified();
  gPad->Update();
  gPad->SetLogy(1);
  //
  cnv->cd();
  cnv->Print(psnm1.Data());
  //
  // plot cluster sized from 1 to 10
  for (int i=1;i<=10;i++) {
    if (clall->GetBinContent(clall->FindBin(i))<100) continue;
    DrawNP(i,harr,cnv);
    cnv->Print(psnm1.Data());
  }
  cnv->Print(psnm2.Data());
}

//------------------------------------------
TH1* GetHistoClSize(int npix,int id,TObjArray* harr)
{
  // book histos
  TH1* h = 0;
  if (!harr) harr = &histoArr;
  //
  if (npix<1) {
    if (harr->GetEntriesFast()>=id && (h=(TH1*)harr->At(id))) return h;
    h = new TH1F("npixAll","npixAll",150,0.5,54.5); 
    h->SetDirectory(0);
    h->SetLineColor(kRed);
    harr->AddAtAndExpand(h, kNPixAll);
    //
    h = new TH1F("npixSpl","npixSpl",150,0.5,54.5);
    h->SetLineColor(kBlue);
    h->SetDirectory(0);
    harr->AddAtAndExpand(h, kNPixSPL);
    //
    h = (TH1*)harr->At(id);
    if (!h) {printf("Unknown histo id=%d\n",id); exit(1);}
    return h;
  }
  //
  int idh = npix*10+id;
  if (harr->GetEntriesFast()>=idh && (h=(TH1*)harr->At(idh))) return h;
  //
  const int nbin=100;
  const double kdiff=80;
  // need to create set of histos
  //
  h = new TH1F(Form("dxy_npix%d",npix),Form("dr_npix%d",npix),nbin,-kdiff,kdiff);
  h->SetDirectory(0);
  harr->AddAtAndExpand(h, npix*10 + kDR);
  //
  h  = new TH1F(Form("dtxODD_npix%d",npix),Form("dtxODD_npix%d",npix),nbin,-kdiff,kdiff);
  h->SetDirectory(0);
  h->SetLineColor(kRed);
  harr->AddAtAndExpand(h, npix*10 + kDTXodd);
  h  = new TH1F(Form("dtxEVN_npix%d",npix),Form("dtxEVN_npix%d",npix),nbin,-kdiff,kdiff);
  h->SetDirectory(0);
  h->SetLineColor(kBlue);
  harr->AddAtAndExpand(h, npix*10 + kDTXeven);
  //
  h  = new TH1F(Form("dtz_npix%d",npix),Form("dtz_npix%d",npix),nbin,-kdiff,kdiff);
  h->SetLineColor(kGreen);
  h->SetDirectory(0);
  harr->AddAtAndExpand(h, npix*10 + kDTZ);
  //
  //
  h  = new TH1F(Form("SPL_dtxODD_npix%d",npix),Form("SPL_dtxODD_npix%d",npix),nbin,-kdiff,kdiff);
  h->SetLineColor(kMagenta);
  h->SetFillColor(kMagenta);
  h->SetFillStyle(3001);  
  h->SetLineStyle(2);
  h->SetDirectory(0);

  harr->AddAtAndExpand(h, npix*10 + kDTXoddSPL);
  h  = new TH1F(Form("SPL_dtxEVN_npix%d",npix),Form("SPL_dtxEVN_npix%d",npix),nbin,-kdiff,kdiff);
  h->SetLineColor(kCyan);
  h->SetFillColor(kCyan);
  h->SetFillStyle(3006);  
  h->SetLineStyle(2);
  h->SetDirectory(0);
  harr->AddAtAndExpand(h, npix*10 + kDTXevenSPL);
  //
  h  = new TH1F(Form("SPL_dtz_npix%d",npix),Form("SPLdtz_npix%d",npix),nbin,-kdiff,kdiff);
  harr->AddAtAndExpand(h, npix*10 + kDTZSPL);
  h->SetDirectory(0);
  //
  h->SetLineColor(kGreen+2);
  h->SetFillColor(kGreen+2);
  h->SetLineStyle(2);
  h->SetFillStyle(3001);
  h = (TH1*)harr->At(idh);
  if (!h) {printf("Unknown histo id=%d\n",idh); exit(1);}
  return h;
}



TCanvas* DrawNP(int np, TObjArray* harr, TCanvas* cnv)
{
  if (!harr) harr = &histoArr;
  if (!cnv) cnv = new TCanvas(Form("cnv%d",np),Form("cnv%d",np),900,700);
  cnv->Clear();
  cnv->Divide(2,1);
  cnv->cd(1);
  //
  TH1* dxodd = (TH1*)harr->At(np*10+kDTXodd);
  TH1* dxevn = (TH1*)harr->At(np*10+kDTXeven);
  TH1* dxoddS =(TH1*)harr->At(np*10+kDTXoddSPL);
  TH1* dxevnS =(TH1*)harr->At(np*10+kDTXevenSPL);
  double max = TMath::Max(dxodd->GetMaximum(),dxevn->GetMaximum());
  dxodd->SetMaximum(1.1*max);
  dxodd->GetXaxis()->SetTitle("#DeltaX, #mum");
  dxodd->SetTitle(Form("#DeltaX for clSize=%d",np));
  dxodd->Fit("gaus","","");
  dxevn->Fit("gaus","","sames");
  //
  dxoddS->Draw("sames");
  dxevnS->Draw("sames");
  //
  gPad->Modified();
  gPad->Update();
  SetStPadPos(dxodd,0.75,0.97,0.8,1., -1,dxodd->GetLineColor());
  SetStPadPos(dxevn,0.75,0.97,0.6,0.8, -1,dxevn->GetLineColor());
  SetStPadPos(dxoddS,0.75,0.97,0.4,0.6, -1,dxoddS->GetLineColor());
  SetStPadPos(dxevnS,0.75,0.97,0.2,0.4, -1,dxevnS->GetLineColor());
  //
  cnv->cd(2);
  TH1* dz  = (TH1*)harr->At(np*10+kDTZ);
  dz->SetTitle(Form("#DeltaZ for clSize=%d",np));
  dz->GetXaxis()->SetTitle("#DeltaZ, #mum");
  dz->Fit("gaus");
  TH1* dzS = (TH1*)harr->At(np*10+kDTZSPL);
  dz->Draw("sames");
  gPad->Modified();
  gPad->Update();
  SetStPadPos(dz,0.75,0.97,0.8,1., -1, dz->GetLineColor());
  SetStPadPos(dzS,0.75,0.97,0.5,0.7, -1, dzS->GetLineColor());
  gPad->Modified();
  gPad->Update();
  //
  cnv->cd();
  return cnv;
}


TPaveStats* GetStPad(TH1* hst)
{
  TList *lst = hst->GetListOfFunctions();
  if (!lst) return 0;
  int nf = lst->GetSize();
  for (int i=0;i<nf;i++) {
    TPaveStats *fnc = (TPaveStats*) lst->At(i);
    if (fnc->InheritsFrom("TPaveStats")) return fnc;
  }
  return 0;
  //
}


TPaveStats* SetStPadPos(TH1* hst,float x1,float x2,float y1,float y2, Int_t stl, Int_t col)
{
  TPaveStats* pad = GetStPad(hst);
  if (!pad) return 0;
  pad->SetX1NDC( x1 );
  pad->SetX2NDC( x2 );
  pad->SetY1NDC( y1 );
  pad->SetY2NDC( y2 );
  if (stl>=0) pad->SetFillStyle(stl);
  if (col>=0) pad->SetTextColor(col);
  pad->SetFillColor(0);
  //
  gPad->Modified();
  return pad;
}

void LoadDB(const char* fname)
{
  // load database
  TFile* fl = TFile::Open(fname);
  pattDB = (TObjArray*)fl->Get("TopDB");
  pattFR = (TVectorF*)fl->Get("TopFreq");
  xCentrePix =(TVectorF*)fl->Get("xCOG");
  zCentrePix =(TVectorF*)fl->Get("zCOG");
  xCentreShift =(TVectorF*)fl->Get("xShift");
  zCentreShift =(TVectorF*)fl->Get("zShift");

}

 SecondcompClusHits.C:1
 SecondcompClusHits.C:2
 SecondcompClusHits.C:3
 SecondcompClusHits.C:4
 SecondcompClusHits.C:5
 SecondcompClusHits.C:6
 SecondcompClusHits.C:7
 SecondcompClusHits.C:8
 SecondcompClusHits.C:9
 SecondcompClusHits.C:10
 SecondcompClusHits.C:11
 SecondcompClusHits.C:12
 SecondcompClusHits.C:13
 SecondcompClusHits.C:14
 SecondcompClusHits.C:15
 SecondcompClusHits.C:16
 SecondcompClusHits.C:17
 SecondcompClusHits.C:18
 SecondcompClusHits.C:19
 SecondcompClusHits.C:20
 SecondcompClusHits.C:21
 SecondcompClusHits.C:22
 SecondcompClusHits.C:23
 SecondcompClusHits.C:24
 SecondcompClusHits.C:25
 SecondcompClusHits.C:26
 SecondcompClusHits.C:27
 SecondcompClusHits.C:28
 SecondcompClusHits.C:29
 SecondcompClusHits.C:30
 SecondcompClusHits.C:31
 SecondcompClusHits.C:32
 SecondcompClusHits.C:33
 SecondcompClusHits.C:34
 SecondcompClusHits.C:35
 SecondcompClusHits.C:36
 SecondcompClusHits.C:37
 SecondcompClusHits.C:38
 SecondcompClusHits.C:39
 SecondcompClusHits.C:40
 SecondcompClusHits.C:41
 SecondcompClusHits.C:42
 SecondcompClusHits.C:43
 SecondcompClusHits.C:44
 SecondcompClusHits.C:45
 SecondcompClusHits.C:46
 SecondcompClusHits.C:47
 SecondcompClusHits.C:48
 SecondcompClusHits.C:49
 SecondcompClusHits.C:50
 SecondcompClusHits.C:51
 SecondcompClusHits.C:52
 SecondcompClusHits.C:53
 SecondcompClusHits.C:54
 SecondcompClusHits.C:55
 SecondcompClusHits.C:56
 SecondcompClusHits.C:57
 SecondcompClusHits.C:58
 SecondcompClusHits.C:59
 SecondcompClusHits.C:60
 SecondcompClusHits.C:61
 SecondcompClusHits.C:62
 SecondcompClusHits.C:63
 SecondcompClusHits.C:64
 SecondcompClusHits.C:65
 SecondcompClusHits.C:66
 SecondcompClusHits.C:67
 SecondcompClusHits.C:68
 SecondcompClusHits.C:69
 SecondcompClusHits.C:70
 SecondcompClusHits.C:71
 SecondcompClusHits.C:72
 SecondcompClusHits.C:73
 SecondcompClusHits.C:74
 SecondcompClusHits.C:75
 SecondcompClusHits.C:76
 SecondcompClusHits.C:77
 SecondcompClusHits.C:78
 SecondcompClusHits.C:79
 SecondcompClusHits.C:80
 SecondcompClusHits.C:81
 SecondcompClusHits.C:82
 SecondcompClusHits.C:83
 SecondcompClusHits.C:84
 SecondcompClusHits.C:85
 SecondcompClusHits.C:86
 SecondcompClusHits.C:87
 SecondcompClusHits.C:88
 SecondcompClusHits.C:89
 SecondcompClusHits.C:90
 SecondcompClusHits.C:91
 SecondcompClusHits.C:92
 SecondcompClusHits.C:93
 SecondcompClusHits.C:94
 SecondcompClusHits.C:95
 SecondcompClusHits.C:96
 SecondcompClusHits.C:97
 SecondcompClusHits.C:98
 SecondcompClusHits.C:99
 SecondcompClusHits.C:100
 SecondcompClusHits.C:101
 SecondcompClusHits.C:102
 SecondcompClusHits.C:103
 SecondcompClusHits.C:104
 SecondcompClusHits.C:105
 SecondcompClusHits.C:106
 SecondcompClusHits.C:107
 SecondcompClusHits.C:108
 SecondcompClusHits.C:109
 SecondcompClusHits.C:110
 SecondcompClusHits.C:111
 SecondcompClusHits.C:112
 SecondcompClusHits.C:113
 SecondcompClusHits.C:114
 SecondcompClusHits.C:115
 SecondcompClusHits.C:116
 SecondcompClusHits.C:117
 SecondcompClusHits.C:118
 SecondcompClusHits.C:119
 SecondcompClusHits.C:120
 SecondcompClusHits.C:121
 SecondcompClusHits.C:122
 SecondcompClusHits.C:123
 SecondcompClusHits.C:124
 SecondcompClusHits.C:125
 SecondcompClusHits.C:126
 SecondcompClusHits.C:127
 SecondcompClusHits.C:128
 SecondcompClusHits.C:129
 SecondcompClusHits.C:130
 SecondcompClusHits.C:131
 SecondcompClusHits.C:132
 SecondcompClusHits.C:133
 SecondcompClusHits.C:134
 SecondcompClusHits.C:135
 SecondcompClusHits.C:136
 SecondcompClusHits.C:137
 SecondcompClusHits.C:138
 SecondcompClusHits.C:139
 SecondcompClusHits.C:140
 SecondcompClusHits.C:141
 SecondcompClusHits.C:142
 SecondcompClusHits.C:143
 SecondcompClusHits.C:144
 SecondcompClusHits.C:145
 SecondcompClusHits.C:146
 SecondcompClusHits.C:147
 SecondcompClusHits.C:148
 SecondcompClusHits.C:149
 SecondcompClusHits.C:150
 SecondcompClusHits.C:151
 SecondcompClusHits.C:152
 SecondcompClusHits.C:153
 SecondcompClusHits.C:154
 SecondcompClusHits.C:155
 SecondcompClusHits.C:156
 SecondcompClusHits.C:157
 SecondcompClusHits.C:158
 SecondcompClusHits.C:159
 SecondcompClusHits.C:160
 SecondcompClusHits.C:161
 SecondcompClusHits.C:162
 SecondcompClusHits.C:163
 SecondcompClusHits.C:164
 SecondcompClusHits.C:165
 SecondcompClusHits.C:166
 SecondcompClusHits.C:167
 SecondcompClusHits.C:168
 SecondcompClusHits.C:169
 SecondcompClusHits.C:170
 SecondcompClusHits.C:171
 SecondcompClusHits.C:172
 SecondcompClusHits.C:173
 SecondcompClusHits.C:174
 SecondcompClusHits.C:175
 SecondcompClusHits.C:176
 SecondcompClusHits.C:177
 SecondcompClusHits.C:178
 SecondcompClusHits.C:179
 SecondcompClusHits.C:180
 SecondcompClusHits.C:181
 SecondcompClusHits.C:182
 SecondcompClusHits.C:183
 SecondcompClusHits.C:184
 SecondcompClusHits.C:185
 SecondcompClusHits.C:186
 SecondcompClusHits.C:187
 SecondcompClusHits.C:188
 SecondcompClusHits.C:189
 SecondcompClusHits.C:190
 SecondcompClusHits.C:191
 SecondcompClusHits.C:192
 SecondcompClusHits.C:193
 SecondcompClusHits.C:194
 SecondcompClusHits.C:195
 SecondcompClusHits.C:196
 SecondcompClusHits.C:197
 SecondcompClusHits.C:198
 SecondcompClusHits.C:199
 SecondcompClusHits.C:200
 SecondcompClusHits.C:201
 SecondcompClusHits.C:202
 SecondcompClusHits.C:203
 SecondcompClusHits.C:204
 SecondcompClusHits.C:205
 SecondcompClusHits.C:206
 SecondcompClusHits.C:207
 SecondcompClusHits.C:208
 SecondcompClusHits.C:209
 SecondcompClusHits.C:210
 SecondcompClusHits.C:211
 SecondcompClusHits.C:212
 SecondcompClusHits.C:213
 SecondcompClusHits.C:214
 SecondcompClusHits.C:215
 SecondcompClusHits.C:216
 SecondcompClusHits.C:217
 SecondcompClusHits.C:218
 SecondcompClusHits.C:219
 SecondcompClusHits.C:220
 SecondcompClusHits.C:221
 SecondcompClusHits.C:222
 SecondcompClusHits.C:223
 SecondcompClusHits.C:224
 SecondcompClusHits.C:225
 SecondcompClusHits.C:226
 SecondcompClusHits.C:227
 SecondcompClusHits.C:228
 SecondcompClusHits.C:229
 SecondcompClusHits.C:230
 SecondcompClusHits.C:231
 SecondcompClusHits.C:232
 SecondcompClusHits.C:233
 SecondcompClusHits.C:234
 SecondcompClusHits.C:235
 SecondcompClusHits.C:236
 SecondcompClusHits.C:237
 SecondcompClusHits.C:238
 SecondcompClusHits.C:239
 SecondcompClusHits.C:240
 SecondcompClusHits.C:241
 SecondcompClusHits.C:242
 SecondcompClusHits.C:243
 SecondcompClusHits.C:244
 SecondcompClusHits.C:245
 SecondcompClusHits.C:246
 SecondcompClusHits.C:247
 SecondcompClusHits.C:248
 SecondcompClusHits.C:249
 SecondcompClusHits.C:250
 SecondcompClusHits.C:251
 SecondcompClusHits.C:252
 SecondcompClusHits.C:253
 SecondcompClusHits.C:254
 SecondcompClusHits.C:255
 SecondcompClusHits.C:256
 SecondcompClusHits.C:257
 SecondcompClusHits.C:258
 SecondcompClusHits.C:259
 SecondcompClusHits.C:260
 SecondcompClusHits.C:261
 SecondcompClusHits.C:262
 SecondcompClusHits.C:263
 SecondcompClusHits.C:264
 SecondcompClusHits.C:265
 SecondcompClusHits.C:266
 SecondcompClusHits.C:267
 SecondcompClusHits.C:268
 SecondcompClusHits.C:269
 SecondcompClusHits.C:270
 SecondcompClusHits.C:271
 SecondcompClusHits.C:272
 SecondcompClusHits.C:273
 SecondcompClusHits.C:274
 SecondcompClusHits.C:275
 SecondcompClusHits.C:276
 SecondcompClusHits.C:277
 SecondcompClusHits.C:278
 SecondcompClusHits.C:279
 SecondcompClusHits.C:280
 SecondcompClusHits.C:281
 SecondcompClusHits.C:282
 SecondcompClusHits.C:283
 SecondcompClusHits.C:284
 SecondcompClusHits.C:285
 SecondcompClusHits.C:286
 SecondcompClusHits.C:287
 SecondcompClusHits.C:288
 SecondcompClusHits.C:289
 SecondcompClusHits.C:290
 SecondcompClusHits.C:291
 SecondcompClusHits.C:292
 SecondcompClusHits.C:293
 SecondcompClusHits.C:294
 SecondcompClusHits.C:295
 SecondcompClusHits.C:296
 SecondcompClusHits.C:297
 SecondcompClusHits.C:298
 SecondcompClusHits.C:299
 SecondcompClusHits.C:300
 SecondcompClusHits.C:301
 SecondcompClusHits.C:302
 SecondcompClusHits.C:303
 SecondcompClusHits.C:304
 SecondcompClusHits.C:305
 SecondcompClusHits.C:306
 SecondcompClusHits.C:307
 SecondcompClusHits.C:308
 SecondcompClusHits.C:309
 SecondcompClusHits.C:310
 SecondcompClusHits.C:311
 SecondcompClusHits.C:312
 SecondcompClusHits.C:313
 SecondcompClusHits.C:314
 SecondcompClusHits.C:315
 SecondcompClusHits.C:316
 SecondcompClusHits.C:317
 SecondcompClusHits.C:318
 SecondcompClusHits.C:319
 SecondcompClusHits.C:320
 SecondcompClusHits.C:321
 SecondcompClusHits.C:322
 SecondcompClusHits.C:323
 SecondcompClusHits.C:324
 SecondcompClusHits.C:325
 SecondcompClusHits.C:326
 SecondcompClusHits.C:327
 SecondcompClusHits.C:328
 SecondcompClusHits.C:329
 SecondcompClusHits.C:330
 SecondcompClusHits.C:331
 SecondcompClusHits.C:332
 SecondcompClusHits.C:333
 SecondcompClusHits.C:334
 SecondcompClusHits.C:335
 SecondcompClusHits.C:336
 SecondcompClusHits.C:337
 SecondcompClusHits.C:338
 SecondcompClusHits.C:339
 SecondcompClusHits.C:340
 SecondcompClusHits.C:341
 SecondcompClusHits.C:342
 SecondcompClusHits.C:343
 SecondcompClusHits.C:344
 SecondcompClusHits.C:345
 SecondcompClusHits.C:346
 SecondcompClusHits.C:347
 SecondcompClusHits.C:348
 SecondcompClusHits.C:349
 SecondcompClusHits.C:350
 SecondcompClusHits.C:351
 SecondcompClusHits.C:352
 SecondcompClusHits.C:353
 SecondcompClusHits.C:354
 SecondcompClusHits.C:355
 SecondcompClusHits.C:356
 SecondcompClusHits.C:357
 SecondcompClusHits.C:358
 SecondcompClusHits.C:359
 SecondcompClusHits.C:360
 SecondcompClusHits.C:361
 SecondcompClusHits.C:362
 SecondcompClusHits.C:363
 SecondcompClusHits.C:364
 SecondcompClusHits.C:365
 SecondcompClusHits.C:366
 SecondcompClusHits.C:367
 SecondcompClusHits.C:368
 SecondcompClusHits.C:369
 SecondcompClusHits.C:370
 SecondcompClusHits.C:371
 SecondcompClusHits.C:372
 SecondcompClusHits.C:373
 SecondcompClusHits.C:374
 SecondcompClusHits.C:375
 SecondcompClusHits.C:376
 SecondcompClusHits.C:377
 SecondcompClusHits.C:378
 SecondcompClusHits.C:379
 SecondcompClusHits.C:380
 SecondcompClusHits.C:381
 SecondcompClusHits.C:382
 SecondcompClusHits.C:383
 SecondcompClusHits.C:384
 SecondcompClusHits.C:385
 SecondcompClusHits.C:386
 SecondcompClusHits.C:387
 SecondcompClusHits.C:388
 SecondcompClusHits.C:389
 SecondcompClusHits.C:390
 SecondcompClusHits.C:391
 SecondcompClusHits.C:392
 SecondcompClusHits.C:393
 SecondcompClusHits.C:394
 SecondcompClusHits.C:395
 SecondcompClusHits.C:396
 SecondcompClusHits.C:397
 SecondcompClusHits.C:398
 SecondcompClusHits.C:399
 SecondcompClusHits.C:400
 SecondcompClusHits.C:401
 SecondcompClusHits.C:402
 SecondcompClusHits.C:403
 SecondcompClusHits.C:404
 SecondcompClusHits.C:405
 SecondcompClusHits.C:406
 SecondcompClusHits.C:407
 SecondcompClusHits.C:408
 SecondcompClusHits.C:409
 SecondcompClusHits.C:410
 SecondcompClusHits.C:411
 SecondcompClusHits.C:412
 SecondcompClusHits.C:413
 SecondcompClusHits.C:414
 SecondcompClusHits.C:415
 SecondcompClusHits.C:416
 SecondcompClusHits.C:417
 SecondcompClusHits.C:418
 SecondcompClusHits.C:419
 SecondcompClusHits.C:420
 SecondcompClusHits.C:421
 SecondcompClusHits.C:422
 SecondcompClusHits.C:423
 SecondcompClusHits.C:424
 SecondcompClusHits.C:425
 SecondcompClusHits.C:426
 SecondcompClusHits.C:427
 SecondcompClusHits.C:428
 SecondcompClusHits.C:429
 SecondcompClusHits.C:430
 SecondcompClusHits.C:431
 SecondcompClusHits.C:432
 SecondcompClusHits.C:433
 SecondcompClusHits.C:434
 SecondcompClusHits.C:435
 SecondcompClusHits.C:436
 SecondcompClusHits.C:437
 SecondcompClusHits.C:438
 SecondcompClusHits.C:439
 SecondcompClusHits.C:440
 SecondcompClusHits.C:441
 SecondcompClusHits.C:442
 SecondcompClusHits.C:443
 SecondcompClusHits.C:444
 SecondcompClusHits.C:445
 SecondcompClusHits.C:446
 SecondcompClusHits.C:447
 SecondcompClusHits.C:448
 SecondcompClusHits.C:449
 SecondcompClusHits.C:450
 SecondcompClusHits.C:451
 SecondcompClusHits.C:452
 SecondcompClusHits.C:453
 SecondcompClusHits.C:454
 SecondcompClusHits.C:455
 SecondcompClusHits.C:456
 SecondcompClusHits.C:457
 SecondcompClusHits.C:458
 SecondcompClusHits.C:459
 SecondcompClusHits.C:460
 SecondcompClusHits.C:461
 SecondcompClusHits.C:462
 SecondcompClusHits.C:463
 SecondcompClusHits.C:464
 SecondcompClusHits.C:465
 SecondcompClusHits.C:466
 SecondcompClusHits.C:467
 SecondcompClusHits.C:468
 SecondcompClusHits.C:469
 SecondcompClusHits.C:470
 SecondcompClusHits.C:471
 SecondcompClusHits.C:472
 SecondcompClusHits.C:473
 SecondcompClusHits.C:474
 SecondcompClusHits.C:475
 SecondcompClusHits.C:476
 SecondcompClusHits.C:477
 SecondcompClusHits.C:478
 SecondcompClusHits.C:479
 SecondcompClusHits.C:480
 SecondcompClusHits.C:481
 SecondcompClusHits.C:482
 SecondcompClusHits.C:483
 SecondcompClusHits.C:484
 SecondcompClusHits.C:485
 SecondcompClusHits.C:486
 SecondcompClusHits.C:487
 SecondcompClusHits.C:488
 SecondcompClusHits.C:489
 SecondcompClusHits.C:490
 SecondcompClusHits.C:491
 SecondcompClusHits.C:492
 SecondcompClusHits.C:493
 SecondcompClusHits.C:494
 SecondcompClusHits.C:495
 SecondcompClusHits.C:496
 SecondcompClusHits.C:497
 SecondcompClusHits.C:498
 SecondcompClusHits.C:499
 SecondcompClusHits.C:500
 SecondcompClusHits.C:501
 SecondcompClusHits.C:502
 SecondcompClusHits.C:503
 SecondcompClusHits.C:504
 SecondcompClusHits.C:505
 SecondcompClusHits.C:506
 SecondcompClusHits.C:507
 SecondcompClusHits.C:508
 SecondcompClusHits.C:509
 SecondcompClusHits.C:510
 SecondcompClusHits.C:511
 SecondcompClusHits.C:512
 SecondcompClusHits.C:513
 SecondcompClusHits.C:514
 SecondcompClusHits.C:515
 SecondcompClusHits.C:516
 SecondcompClusHits.C:517
 SecondcompClusHits.C:518
 SecondcompClusHits.C:519
 SecondcompClusHits.C:520
 SecondcompClusHits.C:521
 SecondcompClusHits.C:522
 SecondcompClusHits.C:523
 SecondcompClusHits.C:524
 SecondcompClusHits.C:525
 SecondcompClusHits.C:526
 SecondcompClusHits.C:527
 SecondcompClusHits.C:528
 SecondcompClusHits.C:529
 SecondcompClusHits.C:530
 SecondcompClusHits.C:531
 SecondcompClusHits.C:532
 SecondcompClusHits.C:533
 SecondcompClusHits.C:534
 SecondcompClusHits.C:535
 SecondcompClusHits.C:536
 SecondcompClusHits.C:537
 SecondcompClusHits.C:538
 SecondcompClusHits.C:539
 SecondcompClusHits.C:540
 SecondcompClusHits.C:541
 SecondcompClusHits.C:542
 SecondcompClusHits.C:543
 SecondcompClusHits.C:544
 SecondcompClusHits.C:545
 SecondcompClusHits.C:546
 SecondcompClusHits.C:547
 SecondcompClusHits.C:548
 SecondcompClusHits.C:549
 SecondcompClusHits.C:550
 SecondcompClusHits.C:551
 SecondcompClusHits.C:552
 SecondcompClusHits.C:553
 SecondcompClusHits.C:554
 SecondcompClusHits.C:555
 SecondcompClusHits.C:556
 SecondcompClusHits.C:557
 SecondcompClusHits.C:558
 SecondcompClusHits.C:559
 SecondcompClusHits.C:560
 SecondcompClusHits.C:561
 SecondcompClusHits.C:562
 SecondcompClusHits.C:563
 SecondcompClusHits.C:564
 SecondcompClusHits.C:565
 SecondcompClusHits.C:566
 SecondcompClusHits.C:567
 SecondcompClusHits.C:568
 SecondcompClusHits.C:569
 SecondcompClusHits.C:570
 SecondcompClusHits.C:571
 SecondcompClusHits.C:572
 SecondcompClusHits.C:573
 SecondcompClusHits.C:574
 SecondcompClusHits.C:575
 SecondcompClusHits.C:576
 SecondcompClusHits.C:577
 SecondcompClusHits.C:578
 SecondcompClusHits.C:579
 SecondcompClusHits.C:580
 SecondcompClusHits.C:581
 SecondcompClusHits.C:582
 SecondcompClusHits.C:583
 SecondcompClusHits.C:584
 SecondcompClusHits.C:585
 SecondcompClusHits.C:586
 SecondcompClusHits.C:587
 SecondcompClusHits.C:588
 SecondcompClusHits.C:589
 SecondcompClusHits.C:590
 SecondcompClusHits.C:591
 SecondcompClusHits.C:592
 SecondcompClusHits.C:593
 SecondcompClusHits.C:594
 SecondcompClusHits.C:595
 SecondcompClusHits.C:596
 SecondcompClusHits.C:597
 SecondcompClusHits.C:598
 SecondcompClusHits.C:599
 SecondcompClusHits.C:600
 SecondcompClusHits.C:601
 SecondcompClusHits.C:602
 SecondcompClusHits.C:603
 SecondcompClusHits.C:604
 SecondcompClusHits.C:605
 SecondcompClusHits.C:606
 SecondcompClusHits.C:607
 SecondcompClusHits.C:608
 SecondcompClusHits.C:609
 SecondcompClusHits.C:610
 SecondcompClusHits.C:611
 SecondcompClusHits.C:612
 SecondcompClusHits.C:613
 SecondcompClusHits.C:614
 SecondcompClusHits.C:615
 SecondcompClusHits.C:616
 SecondcompClusHits.C:617
 SecondcompClusHits.C:618
 SecondcompClusHits.C:619
 SecondcompClusHits.C:620
 SecondcompClusHits.C:621
 SecondcompClusHits.C:622
 SecondcompClusHits.C:623
 SecondcompClusHits.C:624
 SecondcompClusHits.C:625
 SecondcompClusHits.C:626
 SecondcompClusHits.C:627
 SecondcompClusHits.C:628
 SecondcompClusHits.C:629
 SecondcompClusHits.C:630
 SecondcompClusHits.C:631
 SecondcompClusHits.C:632
 SecondcompClusHits.C:633
 SecondcompClusHits.C:634
 SecondcompClusHits.C:635
 SecondcompClusHits.C:636
 SecondcompClusHits.C:637
 SecondcompClusHits.C:638
 SecondcompClusHits.C:639
 SecondcompClusHits.C:640
 SecondcompClusHits.C:641
 SecondcompClusHits.C:642
 SecondcompClusHits.C:643
 SecondcompClusHits.C:644
 SecondcompClusHits.C:645
 SecondcompClusHits.C:646
 SecondcompClusHits.C:647
 SecondcompClusHits.C:648
 SecondcompClusHits.C:649
 SecondcompClusHits.C:650
 SecondcompClusHits.C:651
 SecondcompClusHits.C:652
 SecondcompClusHits.C:653