ROOT logo
///////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                           //
//      DIGCluster                                                                           //
//                                                                                           //
//      Class containing   cluster information                                               //
//        (pixel list, digital charge)                                                       //
//                                                                                           //
//                                                                                           //
//                                                                                           //
//                                                                                           //
//                                                                                           //
///////////////////////////////////////////////////////////////////////////////////////////////
#include <digcluster.h>


#include <TROOT.h> // for gROOT object
#include <TMath.h>
#include <TMatrixD.h>
#include <TCanvas.h>
#include <TGraph.h>
#include <TAxis.h>
#include <TRandom3.h>
#include <TFile.h>
#include <TTree.h>
#include <TBranch.h>
#include <TClonesArray.h>

//include other classes.h:
#include "digplane.h"
#include "digadc.h"


using namespace std;

//==============================================================================
ClassImp(DIGCluster)
//______________________________________________________________________________
//  
DIGCluster::DIGCluster()  
{
  //
  // default constructor
  //
  fNpixels=0;
  fPixelMap.clear();
  fDigitalChargeMap.clear();
  Xposition_CoG =-2.0;
  Yposition_CoG =-2.0;
  fSeedPixelIndex = -1;
}  
//______________________________________________________________________________
//  
DIGCluster::~DIGCluster() {  
  //
  // virtual destructor
  //
}
//______________________________________________________________________________
//  
DIGCluster::DIGCluster(DIGCluster & adigCluster)  : TObject()
{

  //recopy constructor
  fNpixels = adigCluster.GetNpixels();

  fPixelMap.resize((adigCluster.GetPixelMap()).size());
  fDigitalChargeMap.resize((adigCluster.GetPixelMap()).size());
  for (Int_t i=0 ; i<fNpixels ; i++){
    fPixelMap[i] = adigCluster.GetPixelMap()[i];
    fDigitalChargeMap[i] = adigCluster.GetDigitalCharge()[i];
  }
  Xposition_CoG = adigCluster.GetXposition_CoG();
  Yposition_CoG = adigCluster.GetYposition_CoG();
  fSeedPixelIndex = adigCluster.GetSeedPixelIndex();

}
//______________________________________________________________________________
//  
void DIGCluster::Clear(const Option_t *) 
{
  //  delete pointers.  fDIGParticleArray->Clear("C");

}
//______________________________________________________________________________
//   
Int_t DIGCluster::GetTotalCharge(){
  Int_t TotalCharge = 0;
  for (Int_t i=0 ; i<fNpixels ; i++){
    TotalCharge+=fDigitalChargeMap[i];
  }
  return TotalCharge;
}
//______________________________________________________________________________
//  
Int_t DIGCluster::Get1stCrownCharge(DIGPlane *myDIGPlane){
  Int_t f1stCrownCharge = 0;
  std::vector<Int_t> pixmapvector;
  pixmapvector = Get1stCrownPixelsIndex(myDIGPlane);
  Int_t imax = pixmapvector.size();
  for ( Int_t i=0 ; i<imax ; i++ ) {
    for ( Int_t j=0 ; j<fNpixels; j++ ) {
      if(pixmapvector[i]==fPixelMap[j]){
	f1stCrownCharge+=fDigitalChargeMap[j];
      }
      //  cout<<" DIGCluster::Get1stCrownCharge i imax pixmapvector "<<i<<" "<<imax<<" "<<pixmapvector[i]<<endl;
      //  cout<<" j fNpixels fPixelMap "<< j<<" "<<fNpixels<<" "<<" "<<fPixelMap[j]<<endl;
      //   cout<<"f1stCrownCharge = "<<f1stCrownCharge<<endl;
    }
  }
  //cout<<" DIGCluster::Get1stCrownCharge "<<f1stCrownCharge<<endl;
  return f1stCrownCharge;
}
//______________________________________________________________________________
//  
Int_t DIGCluster::Get2ndCrownCharge(DIGPlane *myDIGPlane){
  Int_t f2ndCrownCharge = 0;
  std::vector<Int_t> pixmapvector;
  pixmapvector = Get2ndCrownPixelsIndex(myDIGPlane);
  Int_t imax = pixmapvector.size();
  for ( Int_t i=0 ; i<imax;  i++ ) {
    for ( Int_t j=0 ; j<fNpixels;  j++ ) {
      if(pixmapvector[i]==fPixelMap[j]){
	f2ndCrownCharge+=fDigitalChargeMap[j];
      }
    }
  }
  return f2ndCrownCharge;

}
//______________________________________________________________________________
//  
Int_t DIGCluster::Get4NeigboursCharge(DIGPlane *myDIGPlane){
  Int_t f4NeigboursCharge = 0;
  std::vector<Int_t> pixmapvector;
  pixmapvector = Get4NeigboursPixelsIndex(myDIGPlane);
  Int_t imax = pixmapvector.size();
  for ( Int_t i=0 ; i<imax ; i++ ) {
    for ( Int_t j=0 ; j<fNpixels;  j++ ) {
      if(pixmapvector[i]==fPixelMap[j]){
	f4NeigboursCharge+=fDigitalChargeMap[j];
      }
    }
  }
  return f4NeigboursCharge;
}
//______________________________________________________________________________
//  
Int_t DIGCluster::GetMultiplicity(Int_t Threshold){
  Int_t TotalMultiplicity = 0;
  for (Int_t i=0 ; i<fNpixels ; i++){
    if(fDigitalChargeMap[i]>=Threshold){
      TotalMultiplicity++;
    }
  }
  return TotalMultiplicity;

  
}
//______________________________________________________________________________
//  
void DIGCluster::Compute_CoG(DIGPlane *myDIGPlane){
  
  Double_t XCoG = 0.0;
  Double_t YCoG = 0.0;
  Double_t TotalCharge = 0.0;
  for (Int_t i = 0; i < fNpixels ; i++){
    Int_t PixelNumber = fPixelMap[i];
    Double_t Xpix = (myDIGPlane->GetPitchY()) * (0.5+PixelNumber%(myDIGPlane->GetNpixelsX()));
    Double_t Ypix = (myDIGPlane->GetPitchX()) * (0.5+PixelNumber/(myDIGPlane->GetNpixelsX()));
    Int_t Charge = fDigitalChargeMap[i];
    XCoG += Charge * Xpix;
    YCoG += Charge * Ypix;
    TotalCharge += Charge;
  }
  if(TotalCharge>0){
  XCoG = XCoG / TotalCharge;
  YCoG = YCoG / TotalCharge;
  }else{
    XCoG = -1.0;
    YCoG = -1.0;
  }
  SetXposition_CoG(XCoG);
  SetYposition_CoG(YCoG);
}
//______________________________________________________________________________
//   

void DIGCluster::AddPixel(Int_t DigitalCharge, Int_t PixelNumber){
  fNpixels++;
  fPixelMap.push_back(PixelNumber);
  fDigitalChargeMap.push_back(DigitalCharge);
}
//______________________________________________________________________________
//  
void DIGCluster::PrintInfo() {
  std::cout<<"---------DIGCluster properties------------- "<<endl;
  std::cout<<" Total charge, mul1, mul2, mul3, mul4 "<<endl;
  std::cout<<GetTotalCharge()
	   <<" "<<GetMultiplicity(1)
	   <<" "<<GetMultiplicity(2)
	   <<" "<<GetMultiplicity(3)
	   <<" "<<GetMultiplicity(4)<<endl;
  for (Int_t i=0 ; i<fNpixels ; i++){
    std::cout<<i<<" "<<fPixelMap[i]<<" "<<" "<<fDigitalChargeMap[i]<<endl;
  }
  std::cout<<" CoG "<<GetXposition_CoG() <<" "<< GetYposition_CoG()<<endl;
  std::cout<<" SEED index, totalC  seedcharge "<< GetSeedPixelIndex()<<" "<<GetTotalCharge()<<" "<<GetDigitalCharge()[GetSeedPixelIndex()]<<endl;

}
//______________________________________________________________________________
//  
void DIGCluster::Compute_SeedPixel(DIGPlane *myDIGPlane){
 // compute the seed pixel.
  // Find the highest charge and if there are several pixels with the maximum charge, chose the pixel which is the closest of the other pixels.

  Int_t CurrentDigSeedCharge = 0;
  Int_t CurrentDigSeedIndex = -1;
  Float_t CurrentDist = 0;
  for (Int_t i = 0; i < fNpixels ; i++){
    if(fDigitalChargeMap[i]>CurrentDigSeedCharge){
      CurrentDigSeedCharge = fDigitalChargeMap[i];
      CurrentDigSeedIndex = i;
      for (Int_t j = 0; j < fNpixels ; j++){
	if(fDigitalChargeMap[j]==CurrentDigSeedCharge){
	  Int_t SeedCandidatePixelNumber = fPixelMap[i];
	  Double_t SeedCandidateXpix = (myDIGPlane->GetPitchY()) * (0.5+SeedCandidatePixelNumber%(myDIGPlane->GetNpixelsX()));
	  Double_t SeedCandidateYpix = (myDIGPlane->GetPitchX()) * (0.5+SeedCandidatePixelNumber/(myDIGPlane->GetNpixelsX()));
	  Int_t PixelNumber = fPixelMap[j];
	  Double_t Xpix = (myDIGPlane->GetPitchY()) * (0.5+PixelNumber%(myDIGPlane->GetNpixelsX()));
	  Double_t Ypix = (myDIGPlane->GetPitchX()) * (0.5+PixelNumber/(myDIGPlane->GetNpixelsX()));	  
	  CurrentDist += TMath::Sqrt((Xpix-SeedCandidateXpix)*(Xpix-SeedCandidateXpix)+(Ypix-SeedCandidateYpix)*(Ypix-SeedCandidateYpix));
	}
      }
    }else if(fDigitalChargeMap[i]==CurrentDigSeedCharge){
      Float_t newdist = 0;
      for (Int_t j = 0; j < fNpixels ; j++){
	if(fDigitalChargeMap[j]==CurrentDigSeedCharge){
	  Int_t SeedCandidatePixelNumber = fPixelMap[i];
	  Double_t SeedCandidateXpix = (myDIGPlane->GetPitchY()) * (0.5+SeedCandidatePixelNumber%(myDIGPlane->GetNpixelsX()));
	  Double_t SeedCandidateYpix = (myDIGPlane->GetPitchX()) * (0.5+SeedCandidatePixelNumber/(myDIGPlane->GetNpixelsX()));
	  Int_t PixelNumber = fPixelMap[j];
	  Double_t Xpix = (myDIGPlane->GetPitchY()) * (0.5+PixelNumber%(myDIGPlane->GetNpixelsX()));
	  Double_t Ypix = (myDIGPlane->GetPitchX()) * (0.5+PixelNumber/(myDIGPlane->GetNpixelsX()));	  
	  newdist += TMath::Sqrt((Xpix-SeedCandidateXpix)*(Xpix-SeedCandidateXpix)+(Ypix-SeedCandidateYpix)*(Ypix-SeedCandidateYpix));
	}
      }
      if(newdist<CurrentDist){
	CurrentDigSeedCharge = fDigitalChargeMap[i];
	CurrentDigSeedIndex = i;
	CurrentDist = newdist;
      }
    }
  }
  SetSeedPixelIndex(CurrentDigSeedIndex);

}
//______________________________________________________________________________
//   
void DIGCluster::GetXYPixelNumber(Int_t &Xpix, Int_t &Ypix, DIGPlane *myDIGPlane, Int_t PixelNumber){

  Xpix = PixelNumber%(myDIGPlane->GetNpixelsX());
  Ypix = PixelNumber/(myDIGPlane->GetNpixelsX());

}
//______________________________________________________________________________
//  
Int_t DIGCluster::GetSeedPixelIndex(){
//return the seed pixel index in the pixel map.
  return fSeedPixelIndex;
}
//______________________________________________________________________________
//  
void DIGCluster::SetSeedPixelIndex(Int_t Index)
{
  fSeedPixelIndex = Index;
}
//______________________________________________________________________________
//  
std::vector<Int_t> DIGCluster::Get4NeigboursPixelsIndex(DIGPlane *myDIGPlane){
  vector< Int_t > PixelMap;
  PixelMap.clear();
  Int_t Xpix;
  Int_t Ypix;
  GetXYPixelNumber(Xpix,Ypix,myDIGPlane,fPixelMap[fSeedPixelIndex]); // <--------------------------------
  if(IsPixelInThePlane(Xpix+1,Ypix,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+1);
  }
  if(IsPixelInThePlane(Xpix-1,Ypix,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-1);
  }
  if(IsPixelInThePlane(Xpix,Ypix+1,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix,Ypix-1,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-myDIGPlane->GetNpixelsX());
  }
  return PixelMap;
}
//______________________________________________________________________________
//  
std::vector<Int_t> DIGCluster::Get1stCrownPixelsIndex(DIGPlane *myDIGPlane){
  vector< Int_t > PixelMap;
  PixelMap.clear();
  Int_t Xpix;
  Int_t Ypix;
  GetXYPixelNumber(Xpix,Ypix,myDIGPlane,fPixelMap[fSeedPixelIndex]);
  if(IsPixelInThePlane(Xpix-1,Ypix-1,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-1-myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix,Ypix-1,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix+1,Ypix-1,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+1-myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix-1,Ypix,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-1);
  }
  if(IsPixelInThePlane(Xpix+1,Ypix,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+1);
  }
  if(IsPixelInThePlane(Xpix-1,Ypix+1,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-1+myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix,Ypix+1,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix+1,Ypix+1,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+1+myDIGPlane->GetNpixelsX());
  }
  return PixelMap;
}
//______________________________________________________________________________
//  
std::vector<Int_t> DIGCluster::Get2ndCrownPixelsIndex(DIGPlane *myDIGPlane){
  vector< Int_t > PixelMap;
  PixelMap.clear();
  Int_t Xpix;
  Int_t Ypix;
  GetXYPixelNumber(Xpix,Ypix,myDIGPlane,fPixelMap[fSeedPixelIndex]);
  if(IsPixelInThePlane(Xpix-2,Ypix-2,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-2-2*myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix-1,Ypix-2,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-1-2*myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix,Ypix-2,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-2*myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix+1,Ypix-2,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+1-2*myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix+2,Ypix-2,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+2-2*myDIGPlane->GetNpixelsX());
  }


  if(IsPixelInThePlane(Xpix-2,Ypix-1,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-2-myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix+2,Ypix-1,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+2-myDIGPlane->GetNpixelsX());
  }

  if(IsPixelInThePlane(Xpix-2,Ypix,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-2);
  }
  if(IsPixelInThePlane(Xpix+2,Ypix,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+2);
  }


  if(IsPixelInThePlane(Xpix-2,Ypix+1,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-2+myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix+2,Ypix+1,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+2+myDIGPlane->GetNpixelsX());
  }

  if(IsPixelInThePlane(Xpix-2,Ypix+2,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-2+2*myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix-1,Ypix+2,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]-1+2*myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix,Ypix+2,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+2*myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix+1,Ypix+2,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+1+2*myDIGPlane->GetNpixelsX());
  }
  if(IsPixelInThePlane(Xpix+2,Ypix+2,myDIGPlane)){
    PixelMap.push_back(fPixelMap[fSeedPixelIndex]+2+2*myDIGPlane->GetNpixelsX());
  }


  return PixelMap;
}
//______________________________________________________________________________
//  
Bool_t DIGCluster::IsPixelInThePlane(Int_t Xpix, Int_t Ypix, DIGPlane *myDIGPlane){

  Bool_t IsIn = true;
  Int_t NpixelsX = myDIGPlane->GetNpixelsX();
  Int_t NpixelsY = myDIGPlane->GetNpixelsY();
  if(Xpix<0){IsIn = false;}
  if(Ypix<0){IsIn = false;}
  if(Xpix>=NpixelsX){IsIn = false;}
  if(Ypix>=NpixelsY){IsIn = false;}
  return IsIn;
}


 
 digcluster.cxx:1
 digcluster.cxx:2
 digcluster.cxx:3
 digcluster.cxx:4
 digcluster.cxx:5
 digcluster.cxx:6
 digcluster.cxx:7
 digcluster.cxx:8
 digcluster.cxx:9
 digcluster.cxx:10
 digcluster.cxx:11
 digcluster.cxx:12
 digcluster.cxx:13
 digcluster.cxx:14
 digcluster.cxx:15
 digcluster.cxx:16
 digcluster.cxx:17
 digcluster.cxx:18
 digcluster.cxx:19
 digcluster.cxx:20
 digcluster.cxx:21
 digcluster.cxx:22
 digcluster.cxx:23
 digcluster.cxx:24
 digcluster.cxx:25
 digcluster.cxx:26
 digcluster.cxx:27
 digcluster.cxx:28
 digcluster.cxx:29
 digcluster.cxx:30
 digcluster.cxx:31
 digcluster.cxx:32
 digcluster.cxx:33
 digcluster.cxx:34
 digcluster.cxx:35
 digcluster.cxx:36
 digcluster.cxx:37
 digcluster.cxx:38
 digcluster.cxx:39
 digcluster.cxx:40
 digcluster.cxx:41
 digcluster.cxx:42
 digcluster.cxx:43
 digcluster.cxx:44
 digcluster.cxx:45
 digcluster.cxx:46
 digcluster.cxx:47
 digcluster.cxx:48
 digcluster.cxx:49
 digcluster.cxx:50
 digcluster.cxx:51
 digcluster.cxx:52
 digcluster.cxx:53
 digcluster.cxx:54
 digcluster.cxx:55
 digcluster.cxx:56
 digcluster.cxx:57
 digcluster.cxx:58
 digcluster.cxx:59
 digcluster.cxx:60
 digcluster.cxx:61
 digcluster.cxx:62
 digcluster.cxx:63
 digcluster.cxx:64
 digcluster.cxx:65
 digcluster.cxx:66
 digcluster.cxx:67
 digcluster.cxx:68
 digcluster.cxx:69
 digcluster.cxx:70
 digcluster.cxx:71
 digcluster.cxx:72
 digcluster.cxx:73
 digcluster.cxx:74
 digcluster.cxx:75
 digcluster.cxx:76
 digcluster.cxx:77
 digcluster.cxx:78
 digcluster.cxx:79
 digcluster.cxx:80
 digcluster.cxx:81
 digcluster.cxx:82
 digcluster.cxx:83
 digcluster.cxx:84
 digcluster.cxx:85
 digcluster.cxx:86
 digcluster.cxx:87
 digcluster.cxx:88
 digcluster.cxx:89
 digcluster.cxx:90
 digcluster.cxx:91
 digcluster.cxx:92
 digcluster.cxx:93
 digcluster.cxx:94
 digcluster.cxx:95
 digcluster.cxx:96
 digcluster.cxx:97
 digcluster.cxx:98
 digcluster.cxx:99
 digcluster.cxx:100
 digcluster.cxx:101
 digcluster.cxx:102
 digcluster.cxx:103
 digcluster.cxx:104
 digcluster.cxx:105
 digcluster.cxx:106
 digcluster.cxx:107
 digcluster.cxx:108
 digcluster.cxx:109
 digcluster.cxx:110
 digcluster.cxx:111
 digcluster.cxx:112
 digcluster.cxx:113
 digcluster.cxx:114
 digcluster.cxx:115
 digcluster.cxx:116
 digcluster.cxx:117
 digcluster.cxx:118
 digcluster.cxx:119
 digcluster.cxx:120
 digcluster.cxx:121
 digcluster.cxx:122
 digcluster.cxx:123
 digcluster.cxx:124
 digcluster.cxx:125
 digcluster.cxx:126
 digcluster.cxx:127
 digcluster.cxx:128
 digcluster.cxx:129
 digcluster.cxx:130
 digcluster.cxx:131
 digcluster.cxx:132
 digcluster.cxx:133
 digcluster.cxx:134
 digcluster.cxx:135
 digcluster.cxx:136
 digcluster.cxx:137
 digcluster.cxx:138
 digcluster.cxx:139
 digcluster.cxx:140
 digcluster.cxx:141
 digcluster.cxx:142
 digcluster.cxx:143
 digcluster.cxx:144
 digcluster.cxx:145
 digcluster.cxx:146
 digcluster.cxx:147
 digcluster.cxx:148
 digcluster.cxx:149
 digcluster.cxx:150
 digcluster.cxx:151
 digcluster.cxx:152
 digcluster.cxx:153
 digcluster.cxx:154
 digcluster.cxx:155
 digcluster.cxx:156
 digcluster.cxx:157
 digcluster.cxx:158
 digcluster.cxx:159
 digcluster.cxx:160
 digcluster.cxx:161
 digcluster.cxx:162
 digcluster.cxx:163
 digcluster.cxx:164
 digcluster.cxx:165
 digcluster.cxx:166
 digcluster.cxx:167
 digcluster.cxx:168
 digcluster.cxx:169
 digcluster.cxx:170
 digcluster.cxx:171
 digcluster.cxx:172
 digcluster.cxx:173
 digcluster.cxx:174
 digcluster.cxx:175
 digcluster.cxx:176
 digcluster.cxx:177
 digcluster.cxx:178
 digcluster.cxx:179
 digcluster.cxx:180
 digcluster.cxx:181
 digcluster.cxx:182
 digcluster.cxx:183
 digcluster.cxx:184
 digcluster.cxx:185
 digcluster.cxx:186
 digcluster.cxx:187
 digcluster.cxx:188
 digcluster.cxx:189
 digcluster.cxx:190
 digcluster.cxx:191
 digcluster.cxx:192
 digcluster.cxx:193
 digcluster.cxx:194
 digcluster.cxx:195
 digcluster.cxx:196
 digcluster.cxx:197
 digcluster.cxx:198
 digcluster.cxx:199
 digcluster.cxx:200
 digcluster.cxx:201
 digcluster.cxx:202
 digcluster.cxx:203
 digcluster.cxx:204
 digcluster.cxx:205
 digcluster.cxx:206
 digcluster.cxx:207
 digcluster.cxx:208
 digcluster.cxx:209
 digcluster.cxx:210
 digcluster.cxx:211
 digcluster.cxx:212
 digcluster.cxx:213
 digcluster.cxx:214
 digcluster.cxx:215
 digcluster.cxx:216
 digcluster.cxx:217
 digcluster.cxx:218
 digcluster.cxx:219
 digcluster.cxx:220
 digcluster.cxx:221
 digcluster.cxx:222
 digcluster.cxx:223
 digcluster.cxx:224
 digcluster.cxx:225
 digcluster.cxx:226
 digcluster.cxx:227
 digcluster.cxx:228
 digcluster.cxx:229
 digcluster.cxx:230
 digcluster.cxx:231
 digcluster.cxx:232
 digcluster.cxx:233
 digcluster.cxx:234
 digcluster.cxx:235
 digcluster.cxx:236
 digcluster.cxx:237
 digcluster.cxx:238
 digcluster.cxx:239
 digcluster.cxx:240
 digcluster.cxx:241
 digcluster.cxx:242
 digcluster.cxx:243
 digcluster.cxx:244
 digcluster.cxx:245
 digcluster.cxx:246
 digcluster.cxx:247
 digcluster.cxx:248
 digcluster.cxx:249
 digcluster.cxx:250
 digcluster.cxx:251
 digcluster.cxx:252
 digcluster.cxx:253
 digcluster.cxx:254
 digcluster.cxx:255
 digcluster.cxx:256
 digcluster.cxx:257
 digcluster.cxx:258
 digcluster.cxx:259
 digcluster.cxx:260
 digcluster.cxx:261
 digcluster.cxx:262
 digcluster.cxx:263
 digcluster.cxx:264
 digcluster.cxx:265
 digcluster.cxx:266
 digcluster.cxx:267
 digcluster.cxx:268
 digcluster.cxx:269
 digcluster.cxx:270
 digcluster.cxx:271
 digcluster.cxx:272
 digcluster.cxx:273
 digcluster.cxx:274
 digcluster.cxx:275
 digcluster.cxx:276
 digcluster.cxx:277
 digcluster.cxx:278
 digcluster.cxx:279
 digcluster.cxx:280
 digcluster.cxx:281
 digcluster.cxx:282
 digcluster.cxx:283
 digcluster.cxx:284
 digcluster.cxx:285
 digcluster.cxx:286
 digcluster.cxx:287
 digcluster.cxx:288
 digcluster.cxx:289
 digcluster.cxx:290
 digcluster.cxx:291
 digcluster.cxx:292
 digcluster.cxx:293
 digcluster.cxx:294
 digcluster.cxx:295
 digcluster.cxx:296
 digcluster.cxx:297
 digcluster.cxx:298
 digcluster.cxx:299
 digcluster.cxx:300
 digcluster.cxx:301
 digcluster.cxx:302
 digcluster.cxx:303
 digcluster.cxx:304
 digcluster.cxx:305
 digcluster.cxx:306
 digcluster.cxx:307
 digcluster.cxx:308
 digcluster.cxx:309
 digcluster.cxx:310
 digcluster.cxx:311
 digcluster.cxx:312
 digcluster.cxx:313
 digcluster.cxx:314
 digcluster.cxx:315
 digcluster.cxx:316
 digcluster.cxx:317
 digcluster.cxx:318
 digcluster.cxx:319
 digcluster.cxx:320
 digcluster.cxx:321
 digcluster.cxx:322
 digcluster.cxx:323
 digcluster.cxx:324
 digcluster.cxx:325
 digcluster.cxx:326
 digcluster.cxx:327
 digcluster.cxx:328
 digcluster.cxx:329
 digcluster.cxx:330
 digcluster.cxx:331
 digcluster.cxx:332
 digcluster.cxx:333
 digcluster.cxx:334
 digcluster.cxx:335
 digcluster.cxx:336
 digcluster.cxx:337
 digcluster.cxx:338
 digcluster.cxx:339
 digcluster.cxx:340
 digcluster.cxx:341
 digcluster.cxx:342
 digcluster.cxx:343
 digcluster.cxx:344
 digcluster.cxx:345
 digcluster.cxx:346
 digcluster.cxx:347
 digcluster.cxx:348
 digcluster.cxx:349
 digcluster.cxx:350
 digcluster.cxx:351
 digcluster.cxx:352
 digcluster.cxx:353
 digcluster.cxx:354
 digcluster.cxx:355
 digcluster.cxx:356
 digcluster.cxx:357
 digcluster.cxx:358
 digcluster.cxx:359
 digcluster.cxx:360
 digcluster.cxx:361
 digcluster.cxx:362
 digcluster.cxx:363
 digcluster.cxx:364
 digcluster.cxx:365
 digcluster.cxx:366
 digcluster.cxx:367
 digcluster.cxx:368
 digcluster.cxx:369
 digcluster.cxx:370
 digcluster.cxx:371
 digcluster.cxx:372
 digcluster.cxx:373
 digcluster.cxx:374
 digcluster.cxx:375
 digcluster.cxx:376
 digcluster.cxx:377
 digcluster.cxx:378
 digcluster.cxx:379
 digcluster.cxx:380
 digcluster.cxx:381
 digcluster.cxx:382
 digcluster.cxx:383
 digcluster.cxx:384
 digcluster.cxx:385
 digcluster.cxx:386
 digcluster.cxx:387
 digcluster.cxx:388
 digcluster.cxx:389
 digcluster.cxx:390
 digcluster.cxx:391
 digcluster.cxx:392
 digcluster.cxx:393
 digcluster.cxx:394
 digcluster.cxx:395
 digcluster.cxx:396
 digcluster.cxx:397
 digcluster.cxx:398
 digcluster.cxx:399
 digcluster.cxx:400
 digcluster.cxx:401
 digcluster.cxx:402
 digcluster.cxx:403
 digcluster.cxx:404
 digcluster.cxx:405
 digcluster.cxx:406
 digcluster.cxx:407
 digcluster.cxx:408
 digcluster.cxx:409
 digcluster.cxx:410
 digcluster.cxx:411
 digcluster.cxx:412
 digcluster.cxx:413
 digcluster.cxx:414