ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
  #include <Riostream.h>
  #include <TH2I.h>
  #include <TH1D.h>
  #include <TH2D.h>
  #include <TH1I.h>
  #include <TCanvas.h>
  #include <TMatrixD.h>
  #include <TSystem.h>
  #include <TROOT.h>
  #include <TClonesArray.h>
  #include <TTree.h>
  #include <TFile.h>  
  #include <TDirectoryFile.h>

  #include <AliRun.h>
  #include <AliStack.h>
  #include <AliLoader.h>
  #include <AliGeomManager.h>
  #include <AliITSUGeomTGeo.h>
  #include <AliITSUDigitPix.h>
  #include <AliITSUSegmentationPix.h>
 
  #include "AliITSUSuze02.h"

#endif

//v4 - SuZe limits version can be chosen. Requires MakeSuze_v2.h
//v5 - saving average number of digits per encoding window for each module/event
//v6 - saving the lowest remaining number of windows for each of three limits for eache module/event. Requires MakeSuze_v3.h
//v7 - saving distribution of number of digits per encoding window per layer and in total. Requires at least MakeSuze_v4.h
//v8 - changed the number of rows for the small and big sensor to 320 and 640 rescpectively. Used for the "final" production.
//v9 - compatibility changes to MakeSuze_v7 that returns the data size as well.       
//v10 - modules with signal hits are processed by SUZE
//v11 - version to use with MakeSuze_v8 where data size calculation has been corrected and SuzeLimitsVersion=99 has been added
//v12 - switch added to process modules with only signal hits        
//v13 - AliITSUSuze02.h is used instead of MakeSuze_v8.h
//v14 - QED digits are added from the separate file  
//v15 - switch added to add QED digits

Int_t GetSuzeLimits(Int_t DataSizePerWindowInRow, Int_t Version, Int_t& Limit32, Int_t& LimitHalfFSBB, Int_t& LimitFSBB){
  
  switch (Version){
    case 1:
      Limit32=6;
      LimitHalfFSBB=12;
      LimitFSBB=19;
      return 1;
    case 2:
      Limit32=6;
      LimitHalfFSBB=9;
      LimitFSBB=18;
      return 1;
    case 3:
      Limit32=5;
      LimitHalfFSBB=6;
      LimitFSBB=7;
      return 1;
    case 4:
      Limit32=4;
      LimitHalfFSBB=5;
      LimitFSBB=6;
      return 1;
    case 99:
      Limit32=(Int_t)180/DataSizePerWindowInRow;
      LimitHalfFSBB=(Int_t)360/DataSizePerWindowInRow;
      LimitFSBB=(Int_t)570/DataSizePerWindowInRow;
      return 1;
    default:
      return 0;
  }
}

void ScanDigitsSuze02_v15(Int_t Cycle=0, Int_t CollectMode=0, Bool_t ProcessOnlyChipsWithSignal=0, Bool_t AddQED=0, Int_t nEvents=-1, Int_t NRowsEncodingWindow=4,  Int_t NColsEncodingWindow=5, Int_t SuzeLimitsVersion=99, Bool_t SaveResults=kTRUE){ 
//CollectMode - defines which digits are added to SUZE matrix (-1 - Noise, +1 - Signal, 0 - Noise+Signal)
//ProcessOnlyChipsWithSignal - defines if only modules with signal hits are processed, if 0 all the modules are processed
 
  Int_t DataSizePerWindowInRow = 8 + NRowsEncodingWindow*NColsEncodingWindow+TMath::Ceil(TMath::Log2(NRowsEncodingWindow));

  gROOT->SetStyle("Plain");
  if(nEvents==-1) cout<<"Analysing all events in the run";
  else cout<<"Analysing first "<<nEvents<<" events of the run";
  cout<<" (cycle #"<<Cycle<<")";
  if(CollectMode==-1) cout<<" taking only noise pixels";
  else if(CollectMode==1) cout<<" taking only signal pixels";
  cout<<endl;    
  if(ProcessOnlyChipsWithSignal) cout<<"Only modules with signal hits will be processed";
  else cout<<"All modules will be processed";
  cout<<endl;
  //Int_t debugOn=0; //DEBUG
  Int_t nWindowsPerFSBBMax=19;
  Int_t nWindowsPerHalfFSBBMax=12;
  Int_t nWindowsPer32colsMax=6;

  if(!GetSuzeLimits(DataSizePerWindowInRow,SuzeLimitsVersion,nWindowsPer32colsMax,nWindowsPerHalfFSBBMax,nWindowsPerFSBBMax)){
   cout<<"Wrong suze limits version!"<<endl;
   return;
  }
  else{
    cout<<"Suze will use the follwing limits:"<<endl;
    cout<<nWindowsPer32colsMax<<" windows per 32 columns,"<<endl;
    cout<<nWindowsPerHalfFSBBMax<< " windows per half FSBB,"<<endl;
    cout<<nWindowsPerFSBBMax<<" windows per FSBB"<<endl;
  }

  Int_t nWindowsPerFSBBMin=nWindowsPerFSBBMax;
  Int_t nWindowsPerHalfFSBBMin=nWindowsPerHalfFSBBMax;
  Int_t nWindowsPer32colsMin=nWindowsPer32colsMax;

  Char_t logfile_name[100];
  sprintf(logfile_name,"ScanDigits_v15_log_Cycle_%d_nEvents_%d_EncWindow_%dx%d_SuzeLimitsVersion_%d_Mode_%d-%d_QED_%d.log",Cycle,nEvents,NRowsEncodingWindow,NColsEncodingWindow,SuzeLimitsVersion,CollectMode,ProcessOnlyChipsWithSignal,AddQED);
  FILE *logfile = fopen (logfile_name,"w");

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

  gAlice = runLoader->GetAliRun();

  runLoader->LoadHeader();
  runLoader->LoadKinematics();
  runLoader->LoadSDigits();
  runLoader->LoadDigits();

  AliGeomManager::LoadGeometry("geometry.root");
  AliITSUGeomTGeo* gm = new AliITSUGeomTGeo(kTRUE,kTRUE);
  //
  Int_t nLayers = gm->GetNLayers();
  Int_t nChips = gm->GetNChips();

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

  //DIGITS INIT
  TTree * digTree = 0x0; 
  TClonesArray *digArr = new TClonesArray("AliITSUDigitPix"); 
  
  TTree * digTreeQED = 0x0;
  TClonesArray *digArrQED = new TClonesArray("AliITSUDigitPix");
  TDirectoryFile* EventDirectoryQED = 0x0;
  TFile* DigitsFileQED = 0x0;
  
  if(AddQED) {
      
    DigitsFileQED = new TFile("QED/ITS.Digits.root");
    
  }
  if(nEvents==-1) nEvents=runLoader->GetNumberOfEvents();
  printf("N Events : %i \n",nEvents);

  //Chip sizes
  Int_t Chip_Ncols=1362;
  Int_t Chip_Nrows_small=320;
  Int_t Chip_Nrows_big=640;
  Int_t ColAddress=0;
  Int_t RowAddress=0;

  Int_t DataSize=0;
  //Int_t ChipSum=0;

  TH1F* OverflowCodesPerChip = new TH1F("OverflowCodesPerChip","OverflowCodesPerChip",8,0,8);
  TH1F* OverflowCodes = new TH1F("OverflowCodes","Overflow codes",8,0,8);
  TH1F* OverflowCodesPerLayer[nLayers];

  TH1F* nDigitsPerEncodingWindowPerChip = new TH1F("nDigitsPerEncodingWindowPerChip","nDigitsPerEncodingWindowPerChip",NRowsEncodingWindow*NColsEncodingWindow,1,NRowsEncodingWindow*NColsEncodingWindow+1);
  TH1F* nDigitsPerEncodingWindow = new TH1F("nDigitsPerEncodingWindow","nDigitsPerEncodingWindow",NRowsEncodingWindow*NColsEncodingWindow,1,NRowsEncodingWindow*NColsEncodingWindow+1);
  TH1F* nDigitsPerEncodingWindowPerLayer[nLayers];

  Int_t nDigitsLostPerChip=0;
  Int_t nDigitsEncodedPerChip=0;
  Int_t nDigitsLostPerEvent=0;
  Int_t nDigitsPerEvent=0;
  Double_t FractionDigitsLostPerEvent=0;

  Int_t nDigitsLostPerEventPerLayer[nLayers];
  Int_t nDigitsPerEventPerLayer[nLayers];
  Double_t FractionDigitsLostPerEventPerLayer[nLayers];
  Int_t MaxNWindowsPerStavePerLayerPerEvent[nLayers];

  TH1I* NtracksPerEvent_hist = new TH1I("NtracksPerEvent","Ntracks per event",nEvents,0,nEvents);
  TH1I* NdigitsPerEvent_hist = new TH1I("NdigitsPerEvent","Ndigits per event",nEvents,0,nEvents);
  TH1I* NdigitsPerEventPerLayer_hist[nLayers];

  TH1I* nDigitsLostPerEvent_hist = new TH1I("nDigitsLostPerEvent","Digits lost per event",nEvents,0,nEvents);

  TH1D* FractionDigitsLostPerEvent_hist = new TH1D("FractionDigitsLostPerEvent","Fraction of Digits lost per event",nEvents,0,nEvents);
  TH1D* FractionDigitsLostPerEventPerLayer_hist[nLayers];

  TH1I* MaxNWindowsPerStavePerLayerPerEvent_hist[nLayers];

  Int_t nWindows=0;

  //complete maps
  TH2I* nDigitsPerChipPerEvent = new TH2I("nDigitsPerChipPerEvent","nDigits per Chip per Event",nChips,0,nChips,nEvents,0,nEvents);
  TH2I* nDigitsEncodedPerChipPerEvent = new TH2I("nDigitsEncodedPerChipPerEvent","nDigits encoded per Chip per Event",nChips,0,nChips,nEvents,0,nEvents);
  TH2I* nDigitsLostPerChipPerEvent = new TH2I("nDigitsLostPerChipPerEvent","nDigits lost per Chip per Event",nChips,0,nChips,nEvents,0,nEvents);
  TH2F* FractionDigitsLostPerChipPerEvent = new TH2F("FractionDigitsLostPerChipPerEvent","Fraction of digits lost per Chip per Event",nChips,0,nChips,nEvents,0,nEvents);
  TH2I* nEncodingWindowsPerChipPerEvent = new TH2I("nEncodingWindowsPerChipPerEvent","Encoding windows per Chip per Event",nChips,0,nChips,nEvents,0,nEvents);
  TH2F* nDigitsPerEncodingWindowPerChipPerEvent = new TH2F("nDigitsPerEncodingWindowPerChipPerEvent","Average digits per encoding window per Chip per Event",nChips,0,nChips,nEvents,0,nEvents);

  TH2I* nWindowsPerFSBBMinPerChipPerEvent = new TH2I("nWindowsPerFSBBMinPerChipPerEvent","nWindowsPerFSBBMin per Chip per Event",nChips,0,nChips,nEvents,0,nEvents);
  TH2I* nWindowsPerHalfFSBBMinPerChipPerEvent = new TH2I("nWindowsPerHalfFSBBMinPerChipPerEvent","nWindowsPerHalfFSBBMin per Chip per Event",nChips,0,nChips,nEvents,0,nEvents);
  TH2I* nWindowsPer32colsMinPerChipPerEvent = new TH2I("nWindowsPer32colsMinPerChipPerEvent","nWindowsPer32colsMin per Chip per Event",nChips,0,nChips,nEvents,0,nEvents);

  TH2F* DataSizePerChipPerEvent = new TH2F("DataSizePerChipPerEvent","DataSizePerChipPerEvent",nChips,0,nChips,nEvents,0,nEvents);

  Int_t current_stave=-1;
  Int_t current_layer=-1;
  Double_t NWindowsPerStave=0;

  for(Int_t i=0; i<nLayers; i++){
    nDigitsLostPerEventPerLayer[i]=0;
    nDigitsPerEventPerLayer[i]=0;
    FractionDigitsLostPerEventPerLayer[i]=0;

    NdigitsPerEventPerLayer_hist[i] = new TH1I(Form("NdigitsPerEventPerLayer_%d",i),Form("Ndigits at layer %d",i),nEvents,0,nEvents);
    FractionDigitsLostPerEventPerLayer_hist[i] = new TH1D(Form("FractionDigitsLostPerEventPerLayer_%d",i),Form("Fraction of digits lost per event at layer %d",i),nEvents,0,nEvents);

    MaxNWindowsPerStavePerLayerPerEvent[i]=0;
    MaxNWindowsPerStavePerLayerPerEvent_hist[i] = new TH1I(Form("MaxNWindowsPerStavePerLayerPerEvent_%d",i),Form("Max number of windows per stave per event at layer %d",i),nEvents,0,nEvents);

    OverflowCodesPerLayer[i] = new TH1F(Form("OverflowCodesPerLayer_%d",i),Form("Overflow codes at layer %d",i),8,0,8);
    nDigitsPerEncodingWindowPerLayer[i] = new TH1F(Form("nDigitsPerEncodingWindowPerLayer_%d",i),Form("nDigitsPerEncodingWindowPerLayer_%d",i),NRowsEncodingWindow*NColsEncodingWindow,1,NRowsEncodingWindow*NColsEncodingWindow+1);
  }

  Int_t NtracksKine=0;
  for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) {
  //for (Int_t iEvent = 7; iEvent < nEvents; iEvent++) {    //!!!DEBUG
    printf("\n Event %i \n",iEvent);
    runLoader->GetEvent(iEvent);
    AliStack *stack = runLoader->Stack();
    NtracksKine=stack->TreeK()->GetEntries();
    digTree=dl->TreeD(); 
    
    //manually load digits tree for QED
    if(AddQED){
      EventDirectoryQED=(TDirectoryFile*)DigitsFileQED->Get(Form("Event%d",iEvent));          
      digTreeQED=(TTree*)EventDirectoryQED->Get("TreeD"); 
      digTreeQED->SetBranchAddress("ITSDigitsPix",&digArrQED);
    }
    //
    digTree->SetBranchAddress("ITSDigitsPix",&digArr);
    nDigitsLostPerEvent=0;
    nDigitsPerEvent=0;
    for(Int_t i=0; i<nLayers; i++){
      nDigitsPerEventPerLayer[i]=0;
      nDigitsLostPerEventPerLayer[i]=0;
      MaxNWindowsPerStavePerLayerPerEvent[i]=0;
    }
    current_stave=-1;
    current_layer=-1;
    NWindowsPerStave=0;
    
    Int_t ndigQED=0;
    
    for (Int_t imod=0;imod<nChips;imod++) {
      AliITSUSuze02* Chip;
      nDigitsLostPerChip=0;
      nDigitsEncodedPerChip=0;
      digTree->GetEntry(imod); 
      
      if(AddQED){
        digTreeQED->GetEntry(imod);
        ndigQED = digArrQED->GetEntries();
      }
      //Int_t detType = gm->GetChipChipTypeID(imod);
      //AliITSUSegmentationPix* segm = (AliITSUSegmentationPix*)gm->GetSegmentationByID(detType);
      Int_t lay,sta,det;
      Int_t ndig  = digArr->GetEntries();
      
      Int_t ndig_in_cycle=0; 
      Int_t ndig_signal_in_cycle=0;
      if (ndig<1) continue;
      gm->GetChipId(imod, lay,sta,det);
//       printf("\nChip %3d: (det %2d in stave %2d of Layer %d) | NDigits: %4d\n",imod,det,sta,lay,ndig);
      //    
      //if(iEvent==7 && lay==2) cout<<"Chip #"<<imod<<endl;     //!!!DEBUG   
      //if(iEvent==7 && lay==2 && imod==363) debugOn=1; //continue;  //!!!DEBUG
      //else debugOn=0; 
      if(lay>=0 && lay <=2){
        Chip = new AliITSUSuze02(Chip_Nrows_small,Chip_Ncols);
      }
      else{
        Chip = new AliITSUSuze02(Chip_Nrows_big,Chip_Ncols);
      }
      
      Chip->SetEncodingWindowSize(NRowsEncodingWindow,NColsEncodingWindow);
      Chip->SetQuotas(nWindowsPer32colsMax,nWindowsPerHalfFSBBMax,nWindowsPerFSBBMax);
      
      OverflowCodesPerChip->Reset();
      nDigitsPerEncodingWindowPerChip->Reset();

      nWindows=0;
      for(Int_t idig=0;idig<ndig;idig++) {
        AliITSUDigitPix *pDig = (AliITSUDigitPix*)digArr->At(idig);
        if(pDig->GetROCycle()!=Cycle) continue; //selection of the hits from a given RO cycle
        if((CollectMode==-1 && pDig->GetHit(0)!=-1) || (CollectMode==1 && pDig->GetHit(0)==-1)) continue; // selection between noise and signal or both
        ndig_in_cycle++; 
        if(pDig->GetHit(0)!=-1) ndig_signal_in_cycle++;  //counts signal hits in a given RO cycle
        ColAddress=pDig->GetCoord1();
        RowAddress=pDig->GetCoord2();
        Chip->AddDigit(RowAddress,ColAddress);
      }//diglist  
      
      if(AddQED){
        for(Int_t idig=0;idig<ndigQED;idig++) {
          AliITSUDigitPix *pDig = (AliITSUDigitPix*)digArrQED->At(idig);
          if(pDig->GetROCycle()!=Cycle) continue; //selection of the hits from a given RO cycle
          ndig_in_cycle++; 
          ColAddress=pDig->GetCoord1();
          RowAddress=pDig->GetCoord2();
          Chip->AddDigit(RowAddress,ColAddress);
        }//diglist
      }
      
      if(ndig_in_cycle<1){  
        delete Chip; 
        continue; //rejects when no hits in a given cycle
      }
      nDigitsPerEvent+=ndig_in_cycle;
      nDigitsPerEventPerLayer[lay]+=ndig_in_cycle;
      if(ProcessOnlyChipsWithSignal){       //if ProcessOnlyChipsWithSignal==1
        if(ndig_signal_in_cycle<1){   
          delete Chip;
          continue;  //rejects when only noise is the present
        }
      }
      
      Chip->Process(OverflowCodesPerChip,nDigitsPerEncodingWindowPerChip);
      DataSize=Chip->GetDataSize();
      nDigitsEncodedPerChip=Chip->GetNDigitsEncoded();
      nDigitsLostPerChip=Chip->GetNDigitsLost();
      nWindows=Chip->GetNEncodedWindows();                           
      nWindowsPer32colsMin=Chip->GetNWindowsPer32colsMin();
      nWindowsPerHalfFSBBMin=Chip->GetNWindowsPerHalfFSBBMin();
      nWindowsPerFSBBMin=Chip->GetNWindowsPerFSBBMin();
      
     //DataSize=MakeSuze(Chip_matrix,OverflowCodesPerChip,nDigitsEncodedPerChip,nDigitsLostPerChip,nWindows,nWindowsPer32colsMax,nWindowsPerHalfFSBBMax,nWindowsPerFSBBMax,nWindowsPer32colsMin,nWindowsPerHalfFSBBMin,nWindowsPerFSBBMin,nDigitsPerEncodingWindowPerChip);
//       cout<<"SUZE encoded "<<SuzeReturn<<" digits in "<<nWindows<<" windows"<<endl;
      OverflowCodes->Add(OverflowCodesPerChip);
      OverflowCodesPerLayer[lay]->Add(OverflowCodesPerChip);

      nDigitsPerEncodingWindow->Add(nDigitsPerEncodingWindowPerChip);
      nDigitsPerEncodingWindowPerLayer[lay]->Add(nDigitsPerEncodingWindowPerChip);

//       if(nDigitsLostPerChip){
//         cout<<"------- Some digits were lost. Check overflow errors"<<endl;
//         cout<<"Chip has "<<ChipSum<<" digits"<<endl;
//         cout<<"SUZE reported "<<SuzeReturn<<" encoded and "<<nDigitsLost<<" lost digits"<<endl;
//         cout<<"Chip n."<<imod<<" has lost "<<nDigitsLostPerChip<<" digits due to the overflow"<<endl;

//       }
      if(nDigitsLostPerChip){
	      printf("Event #%d mod. #%d (layer %d) has %d digits lost\n",iEvent,imod,lay,nDigitsLostPerChip);
	      fprintf(logfile,"Event #%d mod. #%d (layer %d) has %d (%f) digits lost\n",iEvent,imod,lay,nDigitsLostPerChip, (Float_t)nDigitsLostPerChip/ndig_in_cycle);
      }
      nDigitsLostPerEvent+=nDigitsLostPerChip;
      nDigitsLostPerEventPerLayer[lay]+=nDigitsLostPerChip;
//       cout<<"Lay:"<<lay<<" Sta:"<<sta<<" current_stave:"<<current_stave<<" current layer:"<<current_layer<<" Digits:"<<SuzeReturn<<endl;
      if(lay!=current_layer){
        cout<<"Layer #"<<lay<<endl;
      }
      if(sta!=current_stave || lay!=current_layer){
        current_stave=sta;
	      current_layer=lay;
	      NWindowsPerStave=0;
      }
      NWindowsPerStave+=nWindows;
      if(NWindowsPerStave>MaxNWindowsPerStavePerLayerPerEvent[current_layer]){
	      MaxNWindowsPerStavePerLayerPerEvent[current_layer]=NWindowsPerStave;
// 	cout<<"---- MaxNWindowsPerStavePerLayerPerEvent:"<<MaxNWindowsPerStavePerLayerPerEvent[current_layer]<<" at layer:"<<current_layer<<endl;
      }
      nDigitsPerChipPerEvent->SetBinContent(imod+1,iEvent+1,ndig_in_cycle);
      nDigitsEncodedPerChipPerEvent->SetBinContent(imod+1,iEvent+1,nDigitsEncodedPerChip);
      nDigitsLostPerChipPerEvent->SetBinContent(imod+1,iEvent+1,nDigitsLostPerChip);
      FractionDigitsLostPerChipPerEvent->SetBinContent(imod+1,iEvent+1,(Double_t)nDigitsLostPerChip/ndig_in_cycle);
      nEncodingWindowsPerChipPerEvent->SetBinContent(imod+1,iEvent+1,nWindows);
      nDigitsPerEncodingWindowPerChipPerEvent->SetBinContent(imod+1,iEvent+1,(Double_t)nDigitsEncodedPerChip/nWindows); 

      nWindowsPerFSBBMinPerChipPerEvent->SetBinContent(imod+1,iEvent+1,nWindowsPerFSBBMax-nWindowsPerFSBBMin);
      nWindowsPerHalfFSBBMinPerChipPerEvent->SetBinContent(imod+1,iEvent+1,nWindowsPerHalfFSBBMax-nWindowsPerHalfFSBBMin);
      nWindowsPer32colsMinPerChipPerEvent->SetBinContent(imod+1,iEvent+1,nWindowsPer32colsMax-nWindowsPer32colsMin);

      DataSizePerChipPerEvent->SetBinContent(imod+1,iEvent+1,DataSize);   
      
      delete Chip;
//      break;
    }//mod
    NtracksPerEvent_hist->SetBinContent(iEvent+1,NtracksKine);
    NdigitsPerEvent_hist->SetBinContent(iEvent+1,nDigitsPerEvent);
    for(Int_t i=0; i<nLayers; i++){
      NdigitsPerEventPerLayer_hist[i]->SetBinContent(iEvent+1,nDigitsPerEventPerLayer[i]);
    }

    nDigitsLostPerEvent_hist->SetBinContent(iEvent+1,nDigitsLostPerEvent);

    if(nDigitsPerEvent){
      FractionDigitsLostPerEvent=(Double_t)nDigitsLostPerEvent/nDigitsPerEvent;
      if(FractionDigitsLostPerEvent) cout<<"Fraction lost = "<<FractionDigitsLostPerEvent<<endl;
      FractionDigitsLostPerEvent_hist->SetBinContent(iEvent+1,FractionDigitsLostPerEvent);
      for(Int_t i=0; i<nLayers; i++){
        if(nDigitsPerEventPerLayer[i]){
          FractionDigitsLostPerEventPerLayer[i]=(Double_t)nDigitsLostPerEventPerLayer[i]/nDigitsPerEventPerLayer[i];
          if(FractionDigitsLostPerEventPerLayer[i]) cout<<"Fraction lost at layer:"<<i<<" is "<<FractionDigitsLostPerEventPerLayer[i]<<endl;
          FractionDigitsLostPerEventPerLayer_hist[i]->SetBinContent(iEvent+1,FractionDigitsLostPerEventPerLayer[i]);
        }
      }
    }
    for(Int_t i=0; i<nLayers; i++){
      MaxNWindowsPerStavePerLayerPerEvent_hist[i]->SetBinContent(iEvent+1,MaxNWindowsPerStavePerLayerPerEvent[i]);
    }
//     break;
  }//event loop
//   TCanvas* c1=new TCanvas();
//   c1->SetLogy();
//   OverflowCodes->DrawNormalized();
//   new TCanvas();
//   nMultipleEncodingsPerEvent_hist->Draw();
//   new TCanvas();
//   nDigitsLostPerEvent_hist->Draw();

  TFile* ResultsFile;
  Char_t ResultsFileName[100];
  if(SaveResults){
    sprintf(ResultsFileName,"ScanDigits_v15_results_cycle_%d_EncWindow_%dx%d_SuzeLimitsVersion_%d_mode_%d-%d_QED_%d.root",Cycle,NRowsEncodingWindow,NColsEncodingWindow,SuzeLimitsVersion,CollectMode,ProcessOnlyChipsWithSignal,AddQED);
    ResultsFile = new TFile(ResultsFileName,"RECREATE");

    OverflowCodes->Write();
    nDigitsPerEncodingWindow->Write();

    NtracksPerEvent_hist->Write();
    NdigitsPerEvent_hist->Write();

    nDigitsLostPerEvent_hist->Write();

    FractionDigitsLostPerEvent_hist->Write();

    for(Int_t i=0; i<nLayers; i++){
      NdigitsPerEventPerLayer_hist[i]->Write();
      FractionDigitsLostPerEventPerLayer_hist[i]->Write();

      MaxNWindowsPerStavePerLayerPerEvent_hist[i]->Write();

      OverflowCodesPerLayer[i]->Write();
      nDigitsPerEncodingWindowPerLayer[i]->Write();
    }

    nDigitsPerChipPerEvent->Write();
    nDigitsEncodedPerChipPerEvent->Write();
    nDigitsLostPerChipPerEvent->Write();
    FractionDigitsLostPerChipPerEvent->Write();
    nEncodingWindowsPerChipPerEvent->Write();
    nDigitsPerEncodingWindowPerChipPerEvent->Write();

    nWindowsPerFSBBMinPerChipPerEvent->Write();
    nWindowsPerHalfFSBBMinPerChipPerEvent->Write();
    nWindowsPer32colsMinPerChipPerEvent->Write();

    DataSizePerChipPerEvent->Write();

    ResultsFile->Close();
  }
  fclose (logfile);
//   cout<<"Multiple Encodings:"<<nMultipleEncodings<<endl;
//   cout<<"Lost digits:"<<nDigitsLostTotal<<endl;

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