ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include<Riostream.h>
#include<TROOT.h>
#include<TArrayI.h>
#include<TBranch.h>
#include<TCanvas.h>
#include<TClassTable.h>
#include<TClonesArray.h>
#include<TFile.h>
#include<TGeoManager.h>
#include<TH1.h>
#include<TH2.h>
#include <TInterpreter.h>
#include<TObject.h>
#include<TObjArray.h>
#include<TTree.h>
#include "AliRun.h"
#include "AliITS.h"
#include "AliITSgeom.h"
#include "AliITSDetTypeRec.h"
#include "AliITSRecPoint.h"
#include "AliITSRecPoint.h"
#include "AliITSdigit.h"
#include "AliITSdigitSSD.h"
#include "AliITShit.h"
#include "AliITSmodule.h" 
#include "AliITSsegmentation.h"
#include "AliITSsegmentationSPD.h" 
#include "AliITSsegmentationSDD.h"
#include "AliITSsegmentationSSD.h"
#include "AliRunLoader.h"
#include "AliITSLoader.h"
#include "AliHeader.h"
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#endif
void GetHitsCoor(TObject *its, Int_t mod, TObjArray & histos, Int_t subd,Bool_t verb);
Int_t GetRecCoor(TObject *ge, TClonesArray *ITSrec, Int_t mod, TH2F *h2, TH1F *h1, Bool_t verb);
Int_t GetClusCoor(TObject *ge, TClonesArray *ITSrec, Int_t mod, TH2F *h2, TH1F *h1, Bool_t verb);
void GetDigits(TObject *tmps,TObject *ge,TClonesArray *ITSdigits, Int_t subd, Int_t mod, Bool_t verbose, TObjArray & histos);

Int_t AliITSGeoPlot (Int_t evesel=0, char *opt="All+ClustersV2", TString filename="galice.root", Int_t isfastpoints = 0) {
  /*******************************************************************
   *  This macro displays geometrical information related to the
   *  hits, digits and rec points (or V2 clusters) in ITS.
   *  There are histograms that are not displayed (i.e. energy
   *  deposition) but that are saved onto a file (see below)
   *
   *  INPUT arguments:
   *
   *  Int_t evesel:  the selected event number. It's =0 by default
   *
   *  Options: Any combination of:
   *    1) subdetector name:  "SPD", "SDD", "SSD", "All" (default)
   *    2) Printouts:        "Verbose" Almost everything is printed out: 
   *                          it is wise to redirect the output onto a file
   *                    e.g.: .x AliITSGeoPlot.C("All+Verbose") > out.log 
   *    3) Rec Points option: "Rec"   ---> Uses Rec. Points (default)
   * 
   *    4) ClustersV2 option: "ClustersV2" ---->Uses ClustersV2
   *                           otherwise ---->uses hits and digits only
   *    Examples:
   *       .x AliITSGeoPlot();  (All subdetectors; no-verbose; no-recpoints)
   *       .x AliITSGeoPlot("SPD+SSD+Verbose+Rec"); 
   *   
   *    filename:   It's "galice.root" by default. 
   *    isfastpoints: integer. It is set to 0 by defaults. This means that
   *                slow reconstruction is assumed. If fast recpoint are in
   *                in use, isfastpoints must be set =1.
   *
   *  OUTPUT: It produces a root file with a list of histograms
   *    
   *  WARNING: spatial information for SSD/DIGITS is obtained by pairing
   *          digits on p and n side originating from the same track, when
   *          possible. This (mis)use of DIGITS is tolerated for debugging 
   *          purposes only !!!!  The pairing in real life should be done
   *          starting from info really available... 
   * 
   *  COMPILATION: this macro can be compiled. 
   *      1)       You need to set your include path with
   * gSystem->SetIncludePath("-I- -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -g");
   *      3)       If you are using root instead of aliroot you need to
   *               execute the macro loadlibs.C in advance
   *      4)       To compile this macro from root (or aliroot):
   *                 ---  .L AliITSGeoPlot.C++
   *                 ---  AliITSGeoPlot();
   *     
   *  M.Masera  14/05/2001 18:30
   *  Last rev. 31/05/2004 14:00 (Clusters V2 added)  E.C.          
   ********************************************************************/

  //Options
  TString choice(opt);
  Bool_t All = choice.Contains("All");
  Bool_t verbose=choice.Contains("Verbose");
  Bool_t userec=choice.Contains("Rec");
  Bool_t useclustersv2=choice.Contains("ClustersV2");
  Int_t retcode=1; //return code
  if (gClassTable->GetID("AliRun") < 0) {
    gInterpreter->ExecuteMacro("loadlibs.C");
  }
  else { 
    if(gAlice){
      delete AliRunLoader::Instance();
      delete gAlice;
      gAlice=0;
    }
  }
  // Set OCDB if needed
  AliCDBManager* man = AliCDBManager::Instance();
  if (!man->IsDefaultStorageSet()) {
    printf("Setting a local default storage and run number 0\n");
    man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
    man->SetRun(0);
  }
  else {
    printf("Using deafult storage \n");
  }
  // retrives geometry 
  TString geof(gSystem->DirName(filename));
  geof += "/geometry.root";
  TGeoManager::Import(geof.Data());
  if (!gGeoManager) {
    cout<<"geometry not found\n";
    return -1;
  }
 
  AliRunLoader* rl = AliRunLoader::Open(filename.Data());
  if (rl == 0x0){
    cerr<<"AliITSGeoPlot.C : Can not open session RL=NULL"<< endl;
    return -1;
  }
  Int_t retval = rl->LoadgAlice();
  if (retval){
    cerr<<"AliITSGeoPlot.C : LoadgAlice returned error"<<endl;
    return -1;
  }
  gAlice=rl->GetAliRun();

  retval = rl->LoadHeader();
  if (retval){
    cerr<<"AliITSGeoPlot.C : LoadHeader returned error"<<endl;
    return -1;
  }

  AliITSLoader* ITSloader =  (AliITSLoader*) rl->GetLoader("ITSLoader");

  if(!ITSloader){
    cerr<<"AliITSGeoPlot.C :  ITS loader not found"<<endl;
    return -1;
  }

  ITSloader->LoadHits("read");
  ITSloader->LoadDigits("read");
  if(isfastpoints==1)ITSloader->SetRecPointsFileName("ITS.FastRecPoints.root");
  ITSloader->LoadRecPoints("read");
  rl->GetEvent(evesel);
  Int_t nparticles = rl->GetHeader()->GetNtrack();
  AliITS *ITS  = (AliITS*)gAlice->GetModule("ITS");
  ITS->SetTreeAddress();
  if(verbose) {
    cout<<" "<<endl<<" "<<endl;
    cout<<"******* Event processing started   *******"<<endl;
    cout<<"In the following, hits with 'StatusEntering' flag active"<<endl;
    cout<<"will not be processed"<<endl; 
    cout << "Number of particles=  " << nparticles <<endl;
  }

  // HITS
  TTree *TH = ITSloader->TreeH();
  Stat_t ntracks = TH->GetEntries();
  if(verbose)cout<<"Number of primary tracks= "<<ntracks<<endl;

  // ITS
  Int_t nmodules;
  ITS->InitModules(-1,nmodules);
  cout<<"Number of ITS modules= "<<nmodules<<endl;
  cout<<"Filling modules... It takes a while, now. Please be patient"<<endl;
  ITS->FillModules(0,0,nmodules," "," ");
  cout<<"ITS modules .... DONE!"<<endl;
  
  AliITSDetTypeRec* detTypeRec = new AliITSDetTypeRec();
  detTypeRec->SetITSgeom(ITSloader->GetITSgeom());
  detTypeRec->SetDefaults();

  // DIGITS
  TTree *TD = ITSloader->TreeD();

  //RECPOINTS (V2 clusters)
  TTree *TR = ITSloader->TreeR();
  TClonesArray *ITSrec  = detTypeRec->RecPoints();
  TBranch *branch = 0;
  if(userec && TR && ITSrec){
    if(isfastpoints==1){
      branch = ITSloader->TreeR()->GetBranch("ITSRecPointsF");
      cout<<"using fast points\n";
    }
    else {
      branch = ITSloader->TreeR()->GetBranch("ITSRecPoints");
    }
    if(branch)branch->SetAddress(&ITSrec);
  }

  if(userec && (!TR || !ITSrec || !branch)){
    userec = kFALSE;
    cout<<"\n ======================================================= \n";
    cout<<"WARNING: there are no RECPOINTS on this file ! \n";
    cout<<"======================================================= \n \n";
  }
  if(useclustersv2 && TR && ITSrec){
    branch = ITSloader->TreeR()->GetBranch("ITSRecPoints");
    if(branch)branch->SetAddress(&ITSrec);
  }

  if(useclustersv2 && (!TR || !ITSrec || !branch)){
    useclustersv2 = kFALSE;
    cout<<"\n ======================================================= \n";
    cout<<"WARNING: there are no CLUSTERSV2 on this file ! \n";
    cout<<"======================================================= \n \n";
  }


  //local variables
  Int_t mod;   //module number
  Int_t nbytes = 0; 
  Double_t pos[3];  // Global position of the current module
  Float_t ragdet; // Radius of detector (x y plane)
  Int_t first; // first module
  Int_t last; // last module
  Int_t nrecp; //number of RecPoints for a given module

  //List of histograms
  TObjArray histos(26,0);  // contains the pointers to the histograms
  // Book histograms SPD
  TH2F *rspd = new TH2F("rspd","Radii of digits - SPD",50,-10.,10.,50,-10.,10.);
  TH2F *rhspd = new TH2F("rhspd","Radii of hits - SPD",50,-10.,10.,50,-10.,10.);
  TH2F *rmspd = new TH2F("rmspd","Radii of SPD modules",50,-10.,10.,50,-10.,10.);
  TH1F *zspd = new TH1F("zspd","Z of digits - SPD",100,-30.,30.);
  TH1F *zhspd = new TH1F("zhspd","Z of hits - SPD",100,-30.,30.);
  TH1F *zmspd = new TH1F("zmspd","Z of SPD modules",100,-30,30.);

  Char_t title1[50]="";
  Char_t title2[50]="";
  if(userec){ 
    sprintf(title1,"Radii of recpoints - %s","SPD");
    sprintf(title2,"Z of recpoints - %s","SPD");
  }
  if(useclustersv2){
    sprintf(title1,"Radii of clustersV2 - %s","SPD");
    sprintf(title2,"Z of clustersV2 - %s","SPD");
  }
  TH2F *rrspd = new TH2F("rrspd",title1,50,-10.,10.,50,-10.,10.);
  TH1F *zrspd = new TH1F("zrspd",title2,100,-30.,30.);
  TH1F *enespd = new TH1F("enespd","Energy deposition SPD (KeV)",100,0.,1000.);
  histos.AddLast(rspd);  // 0
  histos.AddLast(rhspd); // 1
  histos.AddLast(rmspd); // 2
  histos.AddLast(zspd);  // 3
  histos.AddLast(zhspd); // 4
  histos.AddLast(zmspd); // 5
  histos.AddLast(rrspd); // 6
  histos.AddLast(zrspd); // 7
  histos.AddLast(enespd); // 8
  // Book histograms SDD
  TH2F *rsdd = new TH2F("rsdd","Radii of digits - SDD",50,-40.,40.,50,-40.,40.);
  TH2F *rhsdd = new TH2F("rhsdd","Radii of hits - SDD",50,-40.,40.,50,-40.,40.);
  TH2F *rmsdd = new TH2F("rmsdd","Radii of SDD modules",50,-40.,40.,50,-40.,40.);
  TH1F *zsdd = new TH1F("zsdd","Z of digits - SDD",100,-40.,40.);
  TH1F *zhsdd = new TH1F("zhsdd","Z of hits - SDD",100,-40.,40.);
  TH1F *zmsdd = new TH1F("zmsdd","Z of SDD modules",100,-40,40.);
  Char_t title3[50];
  Char_t title4[50];
  if(userec){ 
    sprintf(title3,"Radii of recpoints - %s","SDD");
    sprintf(title4,"Z of recpoints - %s","SDD");
  }
  if(useclustersv2){
    sprintf(title3,"Radii of clustersV2 - %s","SDD");
    sprintf(title4,"Z of clustersV2 - %s","SDD");
  }
  TH2F *rrsdd = new TH2F("rrsdd",title3,50,-40.,40.,50,-40.,40.);   
  TH1F *zrsdd = new TH1F("zrsdd",title4,100,-40.,40.);
  TH1F *enesdd = new TH1F("enesdd","Energy deposition SDD (KeV)",100,0.,1000.);
  histos.AddLast(rsdd);  // 9
  histos.AddLast(rhsdd); // 10
  histos.AddLast(rmsdd); // 11
  histos.AddLast(zsdd);  // 12
  histos.AddLast(zhsdd); // 13
  histos.AddLast(zmsdd); // 14
  histos.AddLast(rrsdd); // 15
  histos.AddLast(zrsdd); // 16
  histos.AddLast(enesdd); // 17
  // Book histogram SSD
  TH2F *rssd = new TH2F("rssd","Radii of digits - SSD",50,-50.,50.,50,-50.,50.);
  TH2F *rhssd = new TH2F("rhssd","Radii of hits - SSD",50,-50.,50.,50,-50.,50.);
  TH2F *rmssd = new TH2F("rmssd","Radii of SSD modules",50,-50.,50.,50,-50.,50.);
  TH1F *zssd = new TH1F("zssd","Z of digits - SSD",100,-70.,70.);
  TH1F *zhssd = new TH1F("zhssd","Z of hits - SSD",100,-70.,70.);
  TH1F *zmssd = new TH1F("zmssd","Z of SSD modules",100,-70,70.);
  Char_t title5[50];
  Char_t title6[50];
  if(userec){ 
    sprintf(title5,"Radii of recpoints - %s","SSD");
    sprintf(title6,"Z of recpoints - %s","SSD");
  }
  if(useclustersv2){
    sprintf(title5,"Radii of clustersV2 - %s","SSD");
    sprintf(title6,"Z of clustersV2 - %s","SSD");
  }

  TH2F *rrssd = new TH2F("rrssd",title5,50,-50.,50.,50,-50.,50.);
  TH1F *zrssd = new TH1F("zrssd",title6,100,-70.,70.);
  TH1F *enessd = new TH1F("enessd","Energy deposition SSD (KeV)",100,0.,1000.);
  histos.AddLast(rssd);  // 18
  histos.AddLast(rhssd); // 19
  histos.AddLast(rmssd); // 20
  histos.AddLast(zssd);  // 21
  histos.AddLast(zhssd); // 22
  histos.AddLast(zmssd); // 23
  histos.AddLast(rrssd); // 24
  histos.AddLast(zrssd); // 25
  histos.AddLast(enessd); // 26
  //
  // Loop on subdetectors
  // 
  cout<<"CALL GETITSGEOM \n \n \n";
  AliITSgeom *geom = ITS->GetITSgeom();
  TString detna; // subdetector name
  for(Int_t subd=0;subd<3;subd++){
    if(All || (choice.Contains("SPD") && subd==0) || (choice.Contains("SDD") && subd==1) || (choice.Contains("SSD") && subd==2)){
      // Prepare array for the digits
      TClonesArray *ITSdigits  = ITS->DigitsAddress(subd);
      Bool_t usedigits = kTRUE;
      if(!ITSdigits){
        usedigits = kFALSE;
        cout<<"\n ======================================================= \n";
        cout<<"WARNING: there are no DIGITS on this file ! \n";
        cout<<"======================================================= \n \n";
      }
      // Get segmentation model
      if(subd==0)detna="SPD";
      if(subd==1)detna="SDD";
      if(subd==2)detna="SSD";
      AliITSsegmentation *seg=(AliITSsegmentation*)detTypeRec->GetSegmentationModel(subd);
      // Loop on modules
      first = geom->GetStartDet(subd);
      last = geom->GetLastDet(subd);
      if(verbose){
        cout<<"     "<<endl<<"-------------------------------------"<<endl;
        cout<<"Start processing subdetector "<<detna<<endl;
        cout<<detna<<" first module "<<first<<endl;
        cout<<detna<<" last module "<<last<<endl;
        cout<<" "<<endl<<" "<<endl;
      }
      for (mod=first; mod<=last; mod++){
        geom->GetTrans(mod,pos);  // position of the module in the MRS
        ragdet=sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
        // The following 2 histos are a check of the geometry
        TH2F *bidi = (TH2F*)histos.At(2+subd*9);
        TH1F *uni = (TH1F*)histos.At(5+subd*9);
        bidi->Fill(pos[0],pos[1]);
        uni->Fill(pos[2]);
        if(verbose){
          cout<<"=========================================================\n";
          cout<<detna<<" module="<<mod<<endl;
          cout<<"Mod. coordinates: "<<pos[0]<<", "<<pos[1]<<", ";
          cout<<pos[2]<<" Radius "<<ragdet<<endl;
        }

        // Hits
        GetHitsCoor(ITS,mod,histos,subd,verbose);

        //RecPoints     
        if(userec){
          detTypeRec->ResetRecPoints();
          branch->GetEvent(mod);
          TH2F *bidi=(TH2F*)histos.At(6+subd*9);
          TH1F *uni=(TH1F*)histos.At(7+subd*9);
          nrecp=GetRecCoor(geom,ITSrec,mod,bidi,uni,verbose);
        }
        if(useclustersv2){
          detTypeRec->ResetRecPoints();
          branch->GetEvent(mod);
          TH2F *bidi=(TH2F*)histos.At(6+subd*9);
          TH1F *uni=(TH1F*)histos.At(7+subd*9);
          nrecp=GetClusCoor(geom,ITSrec,mod,bidi,uni,verbose);
	  
        }
     
        // Digits
        if(usedigits){
          detTypeRec->ResetDigits();
          nbytes += TD->GetEvent(mod);
          GetDigits(seg,geom,ITSdigits,subd,mod,verbose,histos);
        }

      } // End of loop on the modules
      TH1F *h1tmp;
      TH2F *h2tmp;
      //  Plot the histograms
      TCanvas *current=0; // current Canvas (1--> SPD, 2---> SDD, 3---> SSD)
      if(subd==0){
        // Prepare canvas 1
        TCanvas *c1 = new TCanvas("c1","SPD",10,10,600,900);
        c1->Divide(2,3);
        current=c1;
      }
      if(subd==1){
        // Prepare canvas 2
        TCanvas *c2 = new TCanvas("c2","SDD",40,40,600,900);
        c2->Divide(2,3);
        current=c2;
      }
      if(subd==2){
        // Prepare canvas 3
        TCanvas *c3 = new TCanvas("c3","SSD",70,70,600,900);
        c3->Divide(2,3);
        current=c3;
      }
      current->cd(1);
      h2tmp = (TH2F*)histos.At(9*subd);
      h2tmp->Draw();
      current->cd(2);
      h1tmp=(TH1F*)histos.At(3+subd*9);
      h1tmp->Draw();
      current->cd(3);
      h2tmp=(TH2F*)histos.At(1+9*subd);
      h2tmp->Draw();
      current->cd(4);
      h1tmp=(TH1F*)histos.At(4+subd*9);
      h1tmp->Draw();
   
      if(userec || useclustersv2){
        current->cd(5);
        h2tmp=(TH2F*)histos.At(6+9*subd);
        h2tmp->Draw();
        current->cd(6);
        h1tmp=(TH1F*)histos.At(7+subd*9);
        h1tmp->Draw();
      }
  
      else {
        current->cd(5);
        h2tmp=(TH2F*)histos.At(2+9*subd);
        h2tmp->Draw();
        current->cd(6);
        h2tmp=(TH2F*)histos.At(5+9*subd);
        h2tmp->Draw();
      }
    } // if(All.....
  } // end of loop on subdetectors
  // Save the histograms
  TFile *fh = new TFile("AliITSGeoPlot.root","recreate");
  // The list is written to file as a single entry
  TList *lihi = new TList();
  // copy the pointers to the histograms to a TList object.
  // The histograms concerning recpoints are not copied if
  // 'userec' is false.
  for(Int_t i=0;i<histos.GetEntriesFast();i++){
    if(choice.Contains("All") || (choice.Contains("SPD") && i<8) || (choice.Contains("SDD") && i>7 && i<16) || (choice.Contains("SSD") && i>15)){
      if(!(!userec && ((i+2)%9==0 || (i+1)%9==0)))lihi->Add(histos.At(i));
    }
  }
  lihi->Write("Histograms ITS hits+digits+recpoints",TObject::kSingleKey);
  fh->Close();

  return retcode;
}


void GetHitsCoor(TObject *its, Int_t mod, TObjArray & histos, Int_t subd,Bool_t verb){
  TH2F *h2=(TH2F*)histos.At(1+subd*9);
  TH1F *h1=(TH1F*)histos.At(4+subd*9);
  TH1F *ener=(TH1F*)histos.At(8+subd*9);
  AliITS *ITS= (AliITS*)its;
  AliITSmodule *modu = ITS->GetModule(mod);
  TObjArray *fHits = modu->GetHits();
  Int_t nhits = fHits->GetEntriesFast();
  if(nhits>0){
    if(verb){
      cout<<"-------------------------------------------------------"<<endl;
      cout<<"Number of HITS for module "<<mod<<": "<<nhits<<endl;
    }
    for (Int_t hit=0;hit<nhits;hit++) {
      AliITShit *iHit = (AliITShit*) fHits->At(hit);
      if(!iHit->StatusEntering()){
        Float_t x=iHit->GetXG();
        Float_t y=iHit->GetYG();
        Float_t z=iHit->GetZG();
        Float_t edep=iHit->GetIonization()*1000000;
        h2->Fill(x,y);
        h1->Fill(z);
        ener->Fill(edep);
        if(verb){
          cout<<"hit # "<<hit<<" Global coordinates "<<x<<" "<<y<<" "<<z<<endl;
          cout<<"track # "<<iHit->GetTrack()<<" energy deposition (KeV)= ";
          cout<<edep<<endl;
        }
      }
    }
  }
}


Int_t GetClusCoor(TObject *ge, TClonesArray *ITSrec, Int_t mod, TH2F *h2, TH1F *h1, Bool_t verb){

  AliITSgeom *geom = (AliITSgeom*)ge;
  Int_t nrecp = ITSrec->GetEntries();
  if(nrecp>0){
    Float_t lc[3]; for(Int_t i=0; i<3; i++) lc[i]=0.;
    Float_t gc[3]; for(Int_t i=0; i<3; i++) gc[i]=0.;
    if(verb){
      cout<<"-------------------------------------------------------"<<endl;
      cout<<"Number of CLUSTERS for module "<<mod<<": "<<nrecp<<endl;
    }
    for(Int_t irec=0;irec<nrecp;irec++) {
      AliITSRecPoint *recp = (AliITSRecPoint*)ITSrec->At(irec);
      Double_t rot[9];     
      geom->GetRotMatrix(mod,rot);
      Int_t lay,lad,det;   
      geom->GetModuleId(mod,lay,lad,det);
      Float_t tx,ty,tz;    
      geom->GetTrans(lay,lad,det,tx,ty,tz);     

      Double_t alpha=TMath::ATan2(rot[1],rot[0])+TMath::Pi();
      Double_t phi1=TMath::Pi()/2+alpha;
      if(lay==1) phi1+=TMath::Pi();

      Float_t cp=TMath::Cos(phi1), sp=TMath::Sin(phi1);
      Float_t  r=tx*cp+ty*sp;
      gc[0]= r*cp - recp->GetY()*sp;
      gc[1]= r*sp + recp->GetY()*cp;
      gc[2]=recp->GetZ();
  
      if(verb){
        Float_t r=sqrt(gc[0]*gc[0]+gc[1]*gc[1]);
        cout<<"Global coor. + radius "<<gc[0]<<" "<<gc[1]<<" "<<gc[2]<<" ";
        cout<<r<<endl;
        cout<<"Associated track "<<recp->GetLabel(0)<<endl;
      }
      h2->Fill(gc[0],gc[1]);
      h1->Fill(gc[2]);

    }
  }
  return nrecp;
}
Int_t GetRecCoor(TObject *ge, TClonesArray *ITSrec, Int_t mod, TH2F *h2, TH1F *h1, Bool_t verb){
  AliITSgeom *geom = (AliITSgeom*)ge;
  Int_t nrecp = ITSrec->GetEntries();
  if(nrecp>0){
    Float_t lc[3]; for(Int_t i=0; i<3; i++) lc[i]=0.;
    Float_t gc[3]; for(Int_t i=0; i<3; i++) gc[i]=0.;
    if(verb){
      cout<<"-------------------------------------------------------"<<endl;
      cout<<"Number of REC POINTS for module "<<mod<<": "<<nrecp<<endl;
    }
    for(Int_t irec=0;irec<nrecp;irec++) {
      AliITSRecPoint *recp = (AliITSRecPoint*)ITSrec->At(irec);
      lc[0]=recp->GetDetLocalX();
      lc[2]=recp->GetDetLocalZ();
      geom->LtoG(mod,lc,gc);
      if(verb){
        cout<<"recp # "<<irec<<" local coordinates. lx= "<<lc[0]<<" lz= ";
        cout<<lc[2]<<endl;
        Float_t r=sqrt(gc[0]*gc[0]+gc[1]*gc[1]);
        cout<<"Global coor. + radius "<<gc[0]<<" "<<gc[1]<<" "<<gc[2]<<" ";
        cout<<r<<endl;
        cout<<"Associated track "<<recp->GetLabel(0)<<endl;
      }
      h2->Fill(gc[0],gc[1]);
      h1->Fill(gc[2]);
    }
  }
  return nrecp;
}

void GetDigits(TObject *tmps,TObject *ge,TClonesArray *ITSdigits, Int_t subd, Int_t mod, Bool_t verbose, TObjArray & histos){
  AliITSsegmentation *seg = (AliITSsegmentation*)tmps;
  AliITSgeom *geom = (AliITSgeom*)ge;
  Int_t layer;
  Int_t ladder;
  Int_t detec;
  if(subd==2){
    geom->GetModuleId(mod,layer,ladder,detec);
    seg->SetLayer(layer);
  }
  Float_t lcoor[3]; for(Int_t j=0; j<3; j++) lcoor[j]=0.;  //local coord dig.
  Float_t gcoor[3]; for(Int_t j=0; j<3; j++) gcoor[j]=0.; // global coo. dig.
  Float_t ragdig; // Radius digit
  TArrayI ssdone(5000);  // used to match p and n side digits of strips
  TArrayI pair(5000);    // as above 
  Int_t ndigits = ITSdigits->GetEntries();
  AliITSdigit *digs;
  if(ndigits){ 
    if(verbose){
      cout<<"-------------------------------------------------------"<<endl;
      cout<<"Number of DIGITS for module "<<mod<<": "<<ndigits<<endl;
    }
    // Get the coordinates of the module
    if(subd==2){
      for (Int_t digit=0;digit<ndigits;digit++){
        ssdone[digit]=0;
        pair[digit]=0;
      }
    }
    for (Int_t digit=0;digit<ndigits;digit++) {
      digs = (AliITSdigit*)ITSdigits->UncheckedAt(digit);
      Int_t iz=digs->GetCoord1();  // cell number z
      Int_t ix=digs->GetCoord2();  // cell number x
      // Get local coordinates of the element 
      if(subd<2){
        seg->DetToLocal(ix,iz,lcoor[0],lcoor[2]);
      }
      else{
        // SSD: if iz==0 ---> N side; if iz==1 P side
        if(ssdone[digit]==0){
          ssdone[digit]=1;
          pair[digit]=-1;
          Bool_t pside=(iz==1);
          Bool_t impaired=kTRUE;
          Int_t pstrip=0;
          Int_t nstrip=0;
          if(pside)pstrip=ix;
          if(!pside)nstrip=ix;
          for(Int_t digi2=0;digi2<ndigits;digi2++){
            if(ssdone[digi2]==0 && impaired){
              AliITSdigitSSD *dig2=(AliITSdigitSSD*)ITSdigits->UncheckedAt(digi2);
              if(dig2->GetCoord1() != iz && dig2->GetTrack(0)==digs->GetTrack(0) && dig2->GetTrack(0)>0){
                ssdone[digi2]=2;
                pair[digit]=digi2;
                if(pside)nstrip=dig2->GetCoord2();
                if(!pside)pstrip=dig2->GetCoord2();
                impaired=kFALSE;
              }
            }
          }
          if(!impaired)seg->GetPadCxz(pstrip,nstrip,lcoor[0],lcoor[2]);
        }
      }
      if(subd<2 || (subd==2 && ssdone[digit]==1)){
        Int_t coor1=digs->GetCoord1();
        Int_t coor2=digs->GetCoord2();
        Int_t tra0=digs->GetTrack(0);
        if(verbose){
          cout<<"digit # "<<digit<<" fCoord1= "<<coor1<<" fCoord2= ";
          cout<<coor2<<" track "<<tra0<<" "<<endl;
          if(subd<2)cout<<"local coordinates -- x="<<lcoor[0]<<", z=";
          cout<<lcoor[2]<<endl;
          if(subd==2){
            if(pair[digit]==-1){
              cout<<"(digit  not paired)"<<endl;
            }
            else {
              cout<<"local coordinates -- x="<<lcoor[0]<<", z="<<lcoor[2];
              cout<<endl;
              Int_t dtmp=pair[digit];
              AliITSdigitSSD *dig2=(AliITSdigitSSD*)ITSdigits->UncheckedAt(dtmp);
              Int_t coor1b=dig2->GetCoord1();
              Int_t coor2b=dig2->GetCoord2();
              Int_t tra0b=dig2->GetTrack(0);
              cout<<"(digit paired with digit #"<<dtmp<<endl;
              cout<<"with fCoord1= "<<coor1b<<" fCoord2= "<<coor2b;
              cout<<" track "<<tra0b<<")"<<endl;
            }
          }
        }
        if(subd<2 || (subd==2 && pair[digit]!=-1)){
          // Global coordinates of the element
          //SDD and SPD use cm, SSD microns (GetPadCxz)
          if(subd==2)for(Int_t j=0;j<3;j++)lcoor[j]=lcoor[j]/10000.;
          lcoor[1]=0.;
          geom->LtoG(mod,lcoor,gcoor);  // global coord. in cm
          ragdig=sqrt(gcoor[0]*gcoor[0]+gcoor[1]*gcoor[1]);
          if(verbose){
	    cout<<"global coordinates "<<gcoor[0]<<" "<<gcoor[1];
	    cout<<" "<<gcoor[2]<<" Radius "<<ragdig<<endl;
	  }   
          //Fill histograms
          TH2F *bidi = (TH2F*)histos.At(subd*9);
          TH1F *uni = (TH1F*)histos.At(3+subd*9);
          bidi->Fill(gcoor[0],gcoor[1]);
          uni->Fill(gcoor[2]);
        }
      }
    } // loop on digits for this module
  } // if(ndigits>0....
}

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