Clean up to correct for the mess introduced by my eratic branching !
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 19 Jan 2000 15:33:06 +0000 (15:33 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 19 Jan 2000 15:33:06 +0000 (15:33 +0000)
75 files changed:
PHOS/AliPHOS.cxx
PHOS/AliPHOSClusterizerv1.cxx
PHOS/AliPHOSClusterizerv1.h
PHOS/AliPHOSEmcRecPoint.cxx
PHOS/AliPHOSEmcRecPoint.h
PHOS/AliPHOSGeometry.cxx
PHOS/AliPHOSGeometry.h
PHOS/AliPHOSHit.h
PHOS/AliPHOSPpsdRecPoint.cxx
PHOS/AliPHOSPpsdRecPoint.h
PHOS/AliPHOSRecPoint.cxx
PHOS/AliPHOSRecPoint.h
PHOS/AliPHOSReconstructioner.cxx
PHOS/AliPHOSReconstructioner.h
PHOS/AliPHOSTrackSegment.cxx
PHOS/AliPHOSTrackSegment.h
PHOS/AliPHOSTrackSegmentMaker.cxx
PHOS/AliPHOSTrackSegmentMakerv1.cxx
PHOS/AliPHOSTrackSegmentMakerv1.h
PHOS/AliPHOSv0.cxx
PHOS/AliPHOSv0.h
PHOS/AliPHOSv1.cxx [deleted file]
PHOS/AliPHOSv1.h [deleted file]
PHOS/AliPHOSv2.cxx [deleted file]
PHOS/AliPHOSv2.h [deleted file]
PHOS/Makefile
PHOS/PHOS-HTML/aliphosclusterization.gif
PHOS/PHOS-HTML/aliphossimulation.gif
PHOS/PHOS-HTML/aliphossubtracking.gif
PHOS/PHOS-UML/AliPHOSReconstruction.argo
PHOS/PHOS-UML/AliPHOSReconstruction.xmi
PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram1.pgml
PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram2.pgml
PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram3.pgml
PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram4.pgml
PHOS/PHOS-UML/AliPHOSReconstruction_classdiagram5.pgml
PHOS/PHOS-UML/AliPHOSReconstruction_usecasediagram1.pgml
PHOS/PHOS-UML/AliPHOSReconstruction_usecasediagram2.pgml
PHOS/PHOS-UML/AliPHOSReconstruction_usecasediagram3.pgml
PHOS/PHOS-UML/TreeR.gif [deleted file]
PHOS/PHOS-UML/TreeR.ps [deleted file]
PHOS/PHOS-UML/aliphosclusterization.gif [deleted file]
PHOS/PHOS-UML/aliphosclusterization.ps [deleted file]
PHOS/PHOS-UML/aliphosrecomstructioner.ps [deleted file]
PHOS/PHOS-UML/aliphosreconstructioner.gif [deleted file]
PHOS/PHOS-UML/aliphossimulation.gif [deleted file]
PHOS/PHOS-UML/aliphossubtracking.gif [deleted file]
PHOS/PHOS-UML/clusterisation.ps [deleted file]
PHOS/PHOS-UML/g1.gif [deleted file]
PHOS/PHOS-UML/g10.gif [deleted file]
PHOS/PHOS-UML/g11.gif [deleted file]
PHOS/PHOS-UML/g12.gif [deleted file]
PHOS/PHOS-UML/g2.gif [deleted file]
PHOS/PHOS-UML/g3.gif [deleted file]
PHOS/PHOS-UML/g4.gif [deleted file]
PHOS/PHOS-UML/g5.gif [deleted file]
PHOS/PHOS-UML/g6.gif [deleted file]
PHOS/PHOS-UML/g7.gif [deleted file]
PHOS/PHOS-UML/g8.gif [deleted file]
PHOS/PHOS-UML/g9.gif [deleted file]
PHOS/PHOS-UML/recpoint.ps [deleted file]
PHOS/PHOS-UML/simulation.ps [deleted file]
PHOS/PHOS-UML/subtracking.ps [deleted file]
PHOS/PHOS-UML/usecasefastsimulation.gif [deleted file]
PHOS/PHOS-UML/usecasefastsimulation.ps [deleted file]
PHOS/PHOS-UML/usecasegeneral.gif [deleted file]
PHOS/PHOS-UML/usecasegeneral.ps [deleted file]
PHOS/PHOS-UML/usecasereconstruction.gif [deleted file]
PHOS/PHOS-UML/usecasereconstruction.ps [deleted file]
PHOS/PHOSHistos.cxx [new file with mode: 0644]
PHOS/PHOSHistos.h [new file with mode: 0644]
PHOS/PHOSLinkDef.h
PHOS/ReconstructionTest.cxx [new file with mode: 0644]
PHOS/ReconstructionTest.h [new file with mode: 0644]
PHOS/testTrackSegment.C

index da4f679..0ea0a1b 100644 (file)
@@ -27,6 +27,7 @@
 
 #include "AliPHOS.h"
 #include "AliMC.h"
+//#include "TGeant3.h"
 #include "AliRun.h"
 
 ClassImp(AliPHOS)
@@ -273,11 +274,7 @@ void AliPHOS::CreateMaterials()
   // Tracking threshold for photons and electrons in the scintillator crystal 
   gMC->Gstpar(idtmed[699], "CUTGAM",0.5E-4) ; 
   gMC->Gstpar(idtmed[699], "CUTELE",1.0E-4) ;
-
- // Tracking threshold for photons and electrons in the gas 
-  gMC->Gstpar(idtmed[715], "CUTGAM",0.5E-4) ; 
-  gMC->Gstpar(idtmed[715], "CUTELE",1.0E-4) ;
-
   // --- Generate explicitly delta rays in the titan cover ---
   gMC->Gstpar(idtmed[704], "LOSS",3.) ;
   gMC->Gstpar(idtmed[704], "DRAY",1.) ;
@@ -286,4 +283,25 @@ void AliPHOS::CreateMaterials()
   gMC->Gstpar(idtmed[701], "LOSS",3.) ;
   gMC->Gstpar(idtmed[701], "DRAY",1.) ;
 
+// Tracking threshold for photons and electrons in the gas ArC02 
+  //  TGeant3 *geant3 = (TGeant3*)gMC;
+  //geant3->SetERAN(5.e-8, 1.e1,90);
+
+  gMC->Gstpar(idtmed[715], "CUTGAM",1.E-8) ; 
+  gMC->Gstpar(idtmed[715], "CUTELE",1.E-8) ;
+  gMC->Gstpar(idtmed[715], "CUTNEU",1.E-8) ;
+  gMC->Gstpar(idtmed[715], "CUTHAD",1.E-8) ;
+  gMC->Gstpar(idtmed[715], "CUTMUO",1.E-8) ;
+  gMC->Gstpar(idtmed[715], "BCUTE",1.E-8) ;
+  gMC->Gstpar(idtmed[715], "BCUTM",1.E-8) ;
+  gMC->Gstpar(idtmed[715], "DCUTE",1.E-8) ;
+  gMC->Gstpar(idtmed[715], "DCUTM",1.E-8) ;
+  gMC->Gstpar(idtmed[715], "PPCUTM",1.E-8) ;
+  gMC->Gstpar(idtmed[715], "LOSS",2.) ;
+  gMC->Gstpar(idtmed[715], "DRAY",0.) ;
+  gMC->Gstpar(idtmed[715], "STRA",2.) ;
+
+  
+
 }
index 0ef7b04..0571277 100644 (file)
@@ -24,7 +24,7 @@
 
 // --- Standard library ---
 
-#include "iostream.h"
+#include <iostream>
 
 // --- AliRoot header files ---
 
@@ -55,9 +55,9 @@ AliPHOSClusterizerv1::AliPHOSClusterizerv1()
 //____________________________________________________________________________
 Int_t AliPHOSClusterizerv1::AreNeighbours(AliPHOSDigit * d1, AliPHOSDigit * d2)
 {
-  // neigbours are defined as digits having at least common virtix
+  // neigbours are defined as digits having at least common vertex
   // The order of A and B in AreNeighbours(A,B) is important: first (A) should be digit 
-  // in cluster, which compared with digits, which not clasterized yet  
+  // in cluster, which compared with digits not clusterized yet  
   Int_t rv = 0 ; 
 
   AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ;
@@ -97,7 +97,6 @@ void AliPHOSClusterizerv1::FillandSort(const DigitsList * dl, TObjArray * tl)
   // copies the digits with energy above thershold and sorts the list
   // according to increasing Id number
 
-
   AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ;
   Int_t relid[4] ;  
   
@@ -134,7 +133,7 @@ void AliPHOSClusterizerv1:: GetNumberOfClustersFound(Int_t * numb)
 //____________________________________________________________________________
 Bool_t AliPHOSClusterizerv1::IsInEmc(AliPHOSDigit * digit) 
 {
-   Bool_t rv = kFALSE ; 
+  Bool_t rv = kFALSE ; 
 
   AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ;  
 
@@ -150,57 +149,61 @@ Bool_t AliPHOSClusterizerv1::IsInEmc(AliPHOSDigit * digit)
 //____________________________________________________________________________
 void AliPHOSClusterizerv1::MakeClusters(const DigitsList * dl, RecPointsList * emcl, RecPointsList * ppsdl)
 {
-
   // Fill and sort the working digits list
   TObjArray TempoDigitsList( dl->GetEntries() ) ;
-  this->FillandSort(dl, &TempoDigitsList) ; 
-
-
+  FillandSort(dl, &TempoDigitsList) ; 
 
   // Clusterization starts  
   TIter nextdigit(&TempoDigitsList) ; 
   AliPHOSDigit * digit ; 
   Bool_t NotRemoved = kTRUE ;
-
+  cout << "Cluster1" << endl;
   while ( (digit = (AliPHOSDigit *)nextdigit()) ) { // scan over the list of digits
     AliPHOSRecPoint * clu ; 
-
+   
     int * ClusterDigitsList[dl->GetEntries()] ;   
     Int_t index ;
-    if (( (this->IsInEmc(digit)) && (Calibrate(digit->GetAmp()) > fEmcClusteringThreshold ) ) || 
-        ( (!this->IsInEmc(digit)) && (Calibrate(digit->GetAmp()) > fPpsdClusteringThreshold ) ) ) {
+    if (( ( IsInEmc(digit) ) && ( Calibrate(digit->GetAmp() ) > fEmcClusteringThreshold ) ) || 
+        ( ( !IsInEmc(digit) ) && ( Calibrate(digit->GetAmp() ) > fPpsdClusteringThreshold ) ) ) {
   
       Int_t iDigitInCluster = 0 ; 
 
-      if  (this->IsInEmc(digit) ) {   
-        new ((*emcl)[fNumberOfEmcClusters]) AliPHOSEmcRecPoint(fW0, fLocMaxCut) ;// start a new EMC RecPoint
+      if  ( IsInEmc(digit) ) { 
+        emcl->Print("");
+       cout << "Cluster2 EMC" << endl;  
+        new ((*emcl)[fNumberOfEmcClusters]) AliPHOSEmcRecPoint(fW0, fLocMaxCut) ; // start a new EMC RecPoint
+       clu = (AliPHOSEmcRecPoint *) (*emcl)[fNumberOfEmcClusters] ; 
+       fNumberOfEmcClusters++ ; 
+       clu->AddDigit(*digit, Calibrate(digit->GetAmp())) ; 
 
-       clu = (AliPHOSEmcRecPoint *) (*emcl)[fNumberOfEmcClusters++] ; 
-       clu->AddDigit(*digit,Calibrate(digit->GetAmp())) ; 
-
-       ClusterDigitsList[iDigitInCluster++] = (int* ) digit ;  
+       ClusterDigitsList[iDigitInCluster] = (int* ) digit ;    
+       iDigitInCluster++ ; 
        TempoDigitsList.Remove(digit) ; 
       }
 
       else { 
-       new ((*ppsdl)[fNumberOfPpsdClusters]) AliPHOSPpsdRecPoint() ;// start a new PPSD cluster
-       clu =  (AliPHOSPpsdRecPoint *) ppsdl->At(fNumberOfPpsdClusters++)  ;  
-       clu->AddDigit(*digit,0.) ;      
-       ClusterDigitsList[iDigitInCluster++] = (int* ) digit ;  
-        TempoDigitsList.Remove(digit) ; 
+       cout << "Cluster2 PPSD" << endl;
+       new ((*ppsdl)[fNumberOfPpsdClusters]) AliPHOSPpsdRecPoint() ; // start a new PPSD cluster
+       clu =  (AliPHOSPpsdRecPoint *) ppsdl->At(fNumberOfPpsdClusters)  ;  
+       fNumberOfPpsdClusters++ ; 
+       clu->AddDigit(*digit, 0.) ;     
+       ClusterDigitsList[iDigitInCluster] = (int* ) digit ;    
+       iDigitInCluster++ ; 
+       TempoDigitsList.Remove(digit) ; 
         nextdigit.Reset() ;
        
-       //Here we remove resting EMC digits, which can not make cluster
-        if(NotRemoved){ 
+       // Here we remove resting EMC digits, which cannot make cluster
+
+        if( NotRemoved ) { 
          
-         while( (digit = (AliPHOSDigit *)nextdigit()) ){
+         while( ( digit = (AliPHOSDigit *)nextdigit() ) ) {
            
-            if(IsInEmc(digit)) TempoDigitsList.Remove(digit) ;
+            if( IsInEmc(digit) ) 
+             TempoDigitsList.Remove(digit) ;
             else 
              break ;
-           
-         }// while digit  
+         
+         } // while digit  
          
        } // if NotRemoved 
        
@@ -210,20 +213,21 @@ void AliPHOSClusterizerv1::MakeClusters(const DigitsList * dl, RecPointsList * e
 
       AliPHOSDigit * digitN ; 
       index = 0 ;
-      while (index < iDigitInCluster){ // scan over digits already in claster 
-       digit = (AliPHOSDigit *) ClusterDigitsList[index++]  ;      
-
+      while (index < iDigitInCluster){ // scan over digits already in cluster 
+       digit = (AliPHOSDigit *) ClusterDigitsList[index]  ;      
+       index++ ; 
         while ( (digitN = (AliPHOSDigit *)nextdigit()) ) { // scan over the reduced list of digits 
          Int_t ineb = AreNeighbours(digit, digitN);   //  call (digit,digitN) in THAT oder !!!!!
           switch (ineb ) {
-          case 0 :   // not a neibors
+          case 0 :   // not a neighbour
            break ;      
-         case 1 :    // Are neibors 
-           clu->AddDigit(*digitN,Calibrate(digitN->GetAmp())) ;
-           ClusterDigitsList[iDigitInCluster++] =(int*) digitN ; 
+         case 1 :   // are neighbours 
+           clu->AddDigit( *digitN, Calibrate( digitN->GetAmp() ) ) ;
+           ClusterDigitsList[iDigitInCluster] =(int*) digitN ; 
+           iDigitInCluster++ ; 
            TempoDigitsList.Remove(digitN) ;
            break ;
-          case 2 :  // to far from each other
+          case 2 :   // too far from each other
            goto endofloop;   
          } // switch
          
index cbe1d71..1a42142 100644 (file)
@@ -30,13 +30,13 @@ public:
   AliPHOSClusterizerv1() ;             // ctor            
   virtual ~AliPHOSClusterizerv1(){} ;  // dtor
   
-  Int_t AreNeighbours(AliPHOSDigit * d1, AliPHOSDigit * d2) ; // checks if digits are in neighbour cells 
-  Float_t Calibrate(Int_t Amp){ return fA + fB*Amp ;}   //Tranforms Amp to energy 
-  void FillandSort(const DigitsList * dl, TObjArray * tl) ;  // sorts the list according to increasing id
+  Int_t AreNeighbours(AliPHOSDigit * d1, AliPHOSDigit * d2) ; // Checks if digits are in neighbour cells 
+  Float_t Calibrate(Int_t Amp){ return (fA + fB * Amp) ;}     // Tranforms Amp to energy 
+  void FillandSort(const DigitsList * dl, TObjArray * tl) ;   // Sorts the list according to increasing id
   Float_t GetLogWeightCut(void){return  fW0 ; }
   Float_t GetLocalMaxCut(void) {return  fLocMaxCut ; }
   virtual void GetNumberOfClustersFound(Int_t * numb) ;   
-  Bool_t IsInEmc(AliPHOSDigit * digit) ;                      // tells id digit is in EMCA
+  Bool_t IsInEmc(AliPHOSDigit * digit) ;                      // Tells if id digit is in EMC
   virtual void MakeClusters(const DigitsList * dl, RecPointsList * emcl, RecPointsList * ppsdl) ; // does the job 
   void PrintParameters() ;  
   void SetCalibrationParameters(Float_t A,Float_t B){ fA = A ; fB = B;} 
index 2c33578..f015b40 100644 (file)
 //////////////////////////////////////////////////////////////////////////////
 
 // --- ROOT system ---
-
+#include "TPad.h"
+#include "TH2.h"
 #include "TMath.h" 
+#include "TCanvas.h" 
 
 // --- Standard library ---
 
-#include "iostream.h"
+#include <iostream>
 
 // --- AliRoot header files ---
 
@@ -50,11 +52,11 @@ AliPHOSEmcRecPoint::AliPHOSEmcRecPoint(Float_t W0, Float_t LocMaxCut)
   fLocPos.SetX(1000000.)  ;      //Local position should be evaluated
 }
 
-// //____________________________________________________________________________
-// AliPHOSEmcRecPoint::~AliPHOSEmcRecPoint() 
-// {
-//   // dtor 
-// }
+//____________________________________________________________________________
+AliPHOSEmcRecPoint::~AliPHOSEmcRecPoint() 
+{
+  // dtor 
+}
 
 //____________________________________________________________________________
 void AliPHOSEmcRecPoint::AddDigit(AliDigitNew & digit, Float_t Energy)
@@ -63,23 +65,33 @@ void AliPHOSEmcRecPoint::AddDigit(AliDigitNew & digit, Float_t Energy)
   // and accumulates the total amplitude and the multiplicity 
   
   if ( fMulDigit >= fMaxDigit ) { // increase the size of the lists 
-    int * tempo = new ( int[fMaxDigit*=2] ) ; 
-    Float_t * tempoE =  new ( Float_t[fMaxDigit*=2] ) ;
-    Int_t index ; 
-    
+    fMaxDigit*=2 ; 
+    int * tempo = new ( int[fMaxDigit] ) ; 
+    Float_t * tempoE =  new ( Float_t[fMaxDigit] ) ;
+
+    Int_t index ;     
     for ( index = 0 ; index < fMulDigit ; index++ ){
       tempo[index] = fDigitsList[index] ;
       tempoE[index] = fEnergyList[index] ; 
     }
     
-    delete fDigitsList ; 
-    delete fEnergyList ;
-    fDigitsList = tempo ;
-    fEnergyList = tempoE ; 
-  }
+    delete [] fDigitsList ; 
+    fDigitsList =  new ( int[fMaxDigit] ) ;
+    delete [] fEnergyList ;
+    fEnergyList =  new ( Float_t[fMaxDigit] ) ;
+
+    for ( index = 0 ; index < fMulDigit ; index++ ){
+      fDigitsList[index] = tempo[index] ;
+      fEnergyList[index] = tempoE[index] ; 
+    }
+    delete [] tempo ;
+    delete [] tempoE ; 
+  } // if
   
-  fDigitsList[fMulDigit]  =  (int) &digit  ; 
-  fEnergyList[fMulDigit++]= Energy ;
+  fDigitsList[fMulDigit]   =  (int) &digit  ; 
+  fEnergyList[fMulDigit++] = Energy ;
   fAmp += Energy ; 
 }
 
@@ -143,6 +155,108 @@ Int_t AliPHOSEmcRecPoint::Compare(TObject * obj)
   return rv ; 
 }
 
+//______________________________________________________________________________
+void AliPHOSEmcRecPoint::ExecuteEvent(Int_t event, Int_t px, Int_t py)
+{
+//*-*-*-*-*-*-*-*-*-*-*Execute action corresponding to one event*-*-*-*
+//*-*                  =========================================
+//  This member function is called when a AliPHOSRecPoint is clicked with the locator
+//
+//  If Left button is clicked on AliPHOSRecPoint, the digits are switched on    
+//  and switched off when the mouse button is released.
+//
+
+  //   static Int_t pxold, pyold;
+
+   static TGraph *  DigitGraph = 0 ;
+
+   if (!gPad->IsEditable()) return;
+
+   TH2F * Histo = 0 ;
+   TCanvas * HistoCanvas ; 
+   
+   switch (event) {
+   
+   case kButton1Down: {
+     AliPHOSDigit * digit ;
+     AliPHOSGeometry * PHOSGeom =  (AliPHOSGeometry *) fGeom ;
+     Int_t iDigit;
+     Int_t relid[4] ;
+     Float_t xi[fMulDigit] ;
+     Float_t zi[fMulDigit] ;
+
+     // create the histogram for the single cluster 
+     // 1. gets histogram boundaries
+     Float_t ximax = -999. ; 
+     Float_t zimax = -999. ; 
+     Float_t ximin = 999. ; 
+     Float_t zimin = 999. ;
+     for(iDigit=0; iDigit<fMulDigit; iDigit++) {
+       digit = (AliPHOSDigit *) fDigitsList[iDigit];
+       PHOSGeom->AbsToRelNumbering(digit->GetId(), relid) ;
+       PHOSGeom->RelPosInModule(relid, xi[iDigit], zi[iDigit]);
+       if ( xi[iDigit] > ximax )
+        ximax = xi[iDigit] ; 
+       if ( xi[iDigit] < ximin )
+        ximin = xi[iDigit] ; 
+       if ( zi[iDigit] > zimax )
+        zimax = zi[iDigit] ; 
+       if ( zi[iDigit] < zimin )
+        zimin = zi[iDigit] ;     
+     }
+     ximax += PHOSGeom->GetCrystalSize(0) / 2. ;
+     zimax += PHOSGeom->GetCrystalSize(2) / 2. ;
+     ximin -= PHOSGeom->GetCrystalSize(0) / 2. ;
+     zimin -= PHOSGeom->GetCrystalSize(2) / 2. ;
+     Int_t xdim = (int)( (ximax - ximin ) / PHOSGeom->GetCrystalSize(0) + 0.5  ) ; 
+     Int_t zdim = (int)( (zimax - zimin ) / PHOSGeom->GetCrystalSize(2) + 0.5 ) ;
+     // 2. gets the histogram title
+
+     Text_t title[100] ; 
+     sprintf(title,"Energy=%1.2f GeV ; Digits ; %d ", GetEnergy(), GetDigitsMultiplicity()) ;
+  
+     if (!Histo) {
+       delete Histo ; 
+       Histo = 0 ; 
+     }
+     Histo = new TH2F("cluster3D", title,  xdim, ximin, ximax, zdim, zimin, zimax)  ;
+
+     Float_t x, z ; 
+     for(iDigit=0; iDigit<fMulDigit; iDigit++) {
+       digit = (AliPHOSDigit *) fDigitsList[iDigit];
+       PHOSGeom->AbsToRelNumbering(digit->GetId(), relid) ;
+       PHOSGeom->RelPosInModule(relid, x, z);
+       Histo->Fill(x, z, fEnergyList[iDigit] ) ;
+     }
+
+     if (!DigitGraph) {
+       DigitGraph = new TGraph(fMulDigit,xi,zi);
+       DigitGraph-> SetMarkerStyle(5) ; 
+       DigitGraph-> SetMarkerSize(1.) ;
+       DigitGraph-> SetMarkerColor(1) ;
+       DigitGraph-> Paint("P") ;
+     }
+
+     Print() ;
+     HistoCanvas = new TCanvas("cluser", "a single cluster", 600, 500) ; 
+     HistoCanvas->Draw() ; 
+     Histo->Draw("lego1") ; 
+
+     break;
+   }
+
+   case kButton1Up: 
+     if (DigitGraph) {
+       delete DigitGraph  ;
+       DigitGraph = 0 ;
+     }
+     break;
+  
+   }
+}
+
 //____________________________________________________________________________
 Float_t  AliPHOSEmcRecPoint::GetDispersion() 
 {
@@ -257,18 +371,18 @@ Int_t  AliPHOSEmcRecPoint::GetNumberOfLocalMax(int *  maxAt, Float_t * maxAtEner
   Int_t iDigitN ;
   Int_t iDigit ;
 
-  for(iDigit=0; iDigit<fMulDigit; iDigit++) {
+  for(iDigit=0; iDigit<fMulDigit; iDigit++){
     maxAt[iDigit] = fDigitsList[iDigit] ;
   }
   
   for(iDigit=0 ; iDigit<fMulDigit; iDigit++) {   
-    if(maxAt[iDigit]!= -1) {
-      digit = (AliPHOSDigit *) maxAt[iDigit];
+    if(maxAt[iDigit] != -1) {
+      digit = (AliPHOSDigit *) maxAt[iDigit] ;
          
       for(iDigitN=0; iDigitN<fMulDigit; iDigitN++) {   
-       digitN = (AliPHOSDigit *) fDigitsList[iDigitN]; 
+       digitN = (AliPHOSDigit *) fDigitsList[iDigitN] ; 
        
-       if ( AreNeighbours(digit,digitN) ) {
+       if ( AreNeighbours(digit, digitN) ) {
          if (fEnergyList[iDigit] > fEnergyList[iDigitN] ) {    
            maxAt[iDigitN] = -1 ;
            //but may be digit is not local max too ?
@@ -290,7 +404,8 @@ Int_t  AliPHOSEmcRecPoint::GetNumberOfLocalMax(int *  maxAt, Float_t * maxAtEner
   for(iDigit=0; iDigit<fMulDigit; iDigit++) { 
     if(maxAt[iDigit] != -1){
       maxAt[iDigitN] = maxAt[iDigit] ;
-      maxAtEnergy[iDigitN++] = fEnergyList[iDigit] ;
+      maxAtEnergy[iDigitN] = fEnergyList[iDigit] ;
+      iDigitN++ ; 
     }
   }
   return iDigitN ;
@@ -382,11 +497,21 @@ void AliPHOSEmcRecPoint::Print(Option_t * option)
 
   AliPHOSDigit * digit ; 
   Int_t iDigit;
+  AliPHOSGeometry * PHOSGeom =  (AliPHOSGeometry *) fGeom ;
 
+  Float_t xi ;
+  Float_t zi ;
+  Int_t relid[4] ; 
   for(iDigit=0; iDigit<fMulDigit; iDigit++) {
     digit = (AliPHOSDigit *) fDigitsList[iDigit];
-    cout << "     digit Id          = " << digit->GetId()  
-         << "     digit Energy      = " << fEnergyList[iDigit] << endl ;
+    PHOSGeom->AbsToRelNumbering(digit->GetId(), relid) ;
+    PHOSGeom->RelPosInModule(relid, xi, zi);
+    cout << " Id = " << digit->GetId() ;  
+    cout << "   module  = " << relid[0] ;  
+    cout << "   x  = " << xi ;  
+    cout << "   z  = " << zi ;  
+    cout << "   Energy = " << fEnergyList[iDigit] << endl ;
   }
   cout << "       Multiplicity    = " << fMulDigit  << endl ;
   cout << "       Cluster Energy  = " << fAmp << endl ;
index 93ab206..a36b34b 100644 (file)
@@ -26,26 +26,27 @@ class AliPHOSEmcRecPoint : public AliPHOSRecPoint  {
 
 public:
 
-  AliPHOSEmcRecPoint() ;                    
+  AliPHOSEmcRecPoint(){} ;                    
   AliPHOSEmcRecPoint(Float_t W0, Float_t LocMaxCut) ;
-  //  virtual ~AliPHOSEmcRecPoint() ; 
+  virtual ~AliPHOSEmcRecPoint() ; 
   void        AddDigit(AliDigitNew & digit, Float_t Energy) ;  // add a digit to the digits list  
-  Int_t       Compare(TObject * obj) ;                      // method for sorting  
+  Int_t       Compare(TObject * obj) ;                         // method for sorting  
   
   Float_t     GetDelta (){ return fDelta ; }    
-  Float_t     GetDispersion() ;                             // computes the dispersion of the shower
-  void        GetElipsAxis(Float_t * lambda) ;              // computes the axis of shower ellipsoide
+  Float_t     GetDispersion() ;                               // computes the dispersion of the shower
+  void        GetElipsAxis(Float_t * lambda) ;                // computes the axis of shower ellipsoide
   Float_t *   GetEnergiesList(){return fEnergyList ;} 
+  virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py) ; 
   Float_t     GetLocMaxCut () {return fLocMaxCut ; }
   Float_t     GetLogWeightCut (){return fW0 ; }
-  Float_t     GetMaximalEnergy(void) ;                      // get the highest energy in the cluster
+  Float_t     GetMaximalEnergy(void) ;                        // get the highest energy in the cluster
   Int_t       GetMaximumMultiplicity() { return   fMaxDigit ; } 
   Int_t       GetMultiplicity(void) const { return fMulDigit ; } 
-  Int_t       GetMultiplicityAtLevel(const Float_t level) ; // computes multiplicity of digits with energy above relative level
-  Int_t       GetNumberOfLocalMax(int *  maxAt, Float_t * maxAtEnergy) ;     // searches for the local maxima 
+  Int_t       GetMultiplicityAtLevel(const Float_t level) ;   // computes multiplicity of digits with energy above relative level
+  Int_t       GetNumberOfLocalMax(int *  maxAt, Float_t * maxAtEnergy) ; // searches for the local maxima 
  
-  Float_t     GetTotalEnergy(void) const { return fAmp ; } // in EMC RecPoint Amp = Energy
-  void        GetLocalPosition(TVector3 &Lpos) ;            // computes the position in the PHOS module 
+  Float_t     GetTotalEnergy(void) const { return fAmp ; }    // in EMC RecPoint Amp = Energy
+  void        GetLocalPosition(TVector3 &Lpos) ;              // computes the position in the PHOS module 
   Bool_t      IsEmc(void) {return kTRUE ; } 
   Bool_t IsSortable() const { return kTRUE ; } 
   void Print(Option_t * opt = "void") ; 
@@ -59,10 +60,11 @@ public:
   //  AliPHOSEmcRecPoint& operator = (AliPHOSEmcRecPoint clu) ;  
   
 private:
-  Float_t        fDelta ;        // parameter used to sort the clusters   
-  Float_t        fLocMaxCut ;    // parameter used for local maximum searc
-  Float_t    *   fEnergyList ;   //energy of digits
-  Float_t        fW0 ;           // logarithmic weight factor for center of gravity calculation
+
+  Float_t  fDelta ;        // parameter used to sort the clusters   
+  Float_t  fLocMaxCut ;    // parameter used for local maximum searc
+  Float_t * fEnergyList ;  // energy of digits
+  Float_t fW0 ;            // logarithmic weight factor for center of gravity calculation
 
 public: 
 
index 18e2e7a..c541ccf 100644 (file)
@@ -25,8 +25,8 @@
 
 // --- Standard library ---
 
-#include <iostream.h>
-#include "assert.h"
+#include <iostream>
+#include <cassert>
 
 // --- AliRoot header files ---
 
@@ -80,6 +80,88 @@ Bool_t AliPHOSGeometry::AbsToRelNumbering(const Int_t AbsId, Int_t * RelId)
   } 
   return rv ; 
 }
+//____________________________________________________________________________  
+void AliPHOSGeometry::EmcModuleCoverage(const Int_t mod, Double_t & tm, Double_t & tM, Double_t & pm, Double_t & pM, Option_t * opt) 
+{
+  // calculates the angular coverage in theta and phi of a EMC module
+
+ Double_t conv ; 
+  if ( opt == kRadian ) 
+    conv = 1. ; 
+  else if ( opt == kDegre )
+    conv = 180. / TMath::Pi() ; 
+  else {
+    cout << "<I>  AliPHOSGeometry::EmcXtalCoverage : " << opt << " unknown option; result in radian " << endl ; 
+    conv = 1. ;
+      }
+
+  Float_t phi =  GetPHOSAngle(mod) *  (TMath::Pi() / 180.)  ;  
+  Float_t Y0  =  GetIPtoOuterCoverDistance() + GetUpperPlateThickness()
+                 + GetSecondUpperPlateThickness() + GetUpperCoolingPlateThickness()  ;  
+  
+  Double_t angle = TMath::ATan( GetCrystalSize(0)*GetNPhi() / (2 * Y0) ) ;
+  phi = phi + 1.5 * TMath::Pi() ; // to follow the convention of the particle generator(PHOS is between 230 and 310 deg.)
+  Double_t m  = phi - angle ;
+  Double_t M  = phi + angle ;
+  pM = TMath::Max(M, m) * conv ;
+  pm = TMath::Min(M, m) * conv ; 
+  
+  angle =  TMath::ATan( GetCrystalSize(2)*GetNZ() / (2 * Y0) ) ;
+  M  = TMath::Pi() / 2.  + angle ; // to follow the convention of the particle generator(PHOS is at 90 deg.)
+  m  = TMath::Pi() / 2.  - angle ;
+  tM = TMath::Max(M, m) * conv ;
+  tm = TMath::Min(M, m) * conv ; 
+}
+
+//____________________________________________________________________________  
+void AliPHOSGeometry::EmcXtalCoverage(Double_t & theta, Double_t & phi, Option_t * opt) 
+{
+  // calculates the angular coverage in theta and phi of a single crystal in a EMC module
+
+  Double_t conv ; 
+  if ( opt == kRadian ) 
+    conv = 1. ; 
+  else if ( opt == kDegre )
+    conv = 180. / TMath::Pi() ; 
+  else {
+    cout << "<I>  AliPHOSGeometry::EmcXtalCoverage : " << opt << " unknown option; result in radian " << endl ; 
+    conv = 1. ;
+      }
+
+  Float_t Y0   =  GetIPtoOuterCoverDistance() + GetUpperPlateThickness()
+    + GetSecondUpperPlateThickness() + GetUpperCoolingPlateThickness()  ;  
+  theta = 2 * TMath::ATan( GetCrystalSize(2) / (2 * Y0) ) * conv ;
+  phi   = 2 * TMath::ATan( GetCrystalSize(0) / (2 * Y0) ) * conv ;
+}
+
+//____________________________________________________________________________
+void AliPHOSGeometry::ImpactOnEmc(const Double_t theta, const Double_t phi, Int_t & ModuleNumber, Double_t & z, Double_t & x) 
+{
+  // calculates the impact coordinates of a neutral particle  
+  // emitted in direction theta and phi in ALICE
+
+  // searches for the PHOS EMC module
+  ModuleNumber = 0 ; 
+  Double_t tm, tM, pm, pM ; 
+  Int_t index = 1 ; 
+  while ( ModuleNumber == 0 && index <= GetNModules() ) { 
+    EmcModuleCoverage(index, tm, tM, pm, pM) ; 
+    if ( (theta >= tm && theta <= tM) && (phi >= pm && phi <= pM ) ) 
+      ModuleNumber = index ; 
+    index++ ;    
+  }
+  if ( ModuleNumber != 0 ) {
+    Float_t phi0 =  GetPHOSAngle(ModuleNumber) *  (TMath::Pi() / 180.) + 1.5 * TMath::Pi()  ;  
+    Float_t Y0  =  GetIPtoOuterCoverDistance() + GetUpperPlateThickness()
+      + GetSecondUpperPlateThickness() + GetUpperCoolingPlateThickness()  ;   
+    Double_t angle = phi - phi0; 
+    x = Y0 * TMath::Tan(angle) ; 
+    angle = theta - TMath::Pi() / 2 ; 
+    z = Y0 * TMath::Tan(angle) ; 
+  }
+}
 
 //____________________________________________________________________________
 void AliPHOSGeometry::GetGlobal(const AliRecPoint* RecPoint, TVector3 & gpos, TMatrix & gmat)
@@ -258,7 +340,7 @@ void AliPHOSGeometry::InitPPSD(void)
   fAvalancheGap             = 0.01 ; 
   fCathodeThickness         = 0.0009 ;
   fCompositeThickness       = 0.3 ; 
-  fConversionGap            = 0.3 ; 
+  fConversionGap            = 0.6 ; 
   fLeadConverterThickness   = 0.56 ; 
   fLeadToMicro2Gap          = 0.1 ; 
   fLidThickness             = 0.2 ; 
@@ -292,7 +374,6 @@ void AliPHOSGeometry::InitPPSD(void)
 //____________________________________________________________________________
 AliPHOSGeometry *  AliPHOSGeometry::GetInstance() 
 { 
-  assert(fGeom!=0) ; 
   return (AliPHOSGeometry *) fGeom ; 
 }
 
@@ -356,26 +437,29 @@ void AliPHOSGeometry::RelPosInAlice(const Int_t Id, TVector3 & pos )
 
   Int_t PHOSModule = RelId[0] ; 
 
-  
+  Float_t Y0 ; 
+
   if ( RelId[1] == 0 ) // it is a PbW04 crystal 
-  {  pos.SetY( -(GetIPtoOuterCoverDistance() + GetUpperPlateThickness()
-      + GetSecondUpperPlateThickness() + GetUpperCoolingPlateThickness()) ) ;  
+  {  Y0 =  -(GetIPtoOuterCoverDistance() + GetUpperPlateThickness()
+      + GetSecondUpperPlateThickness() + GetUpperCoolingPlateThickness())  ;  
   }
   if ( RelId[1] > 0 ) { // its a PPSD pad
     if ( RelId[1] >  GetNumberOfModulesPhi() *  GetNumberOfModulesZ() ) // its an bottom module
      {
-       pos.SetY(-( GetIPtoOuterCoverDistance() - GetMicromegas2Thickness() / 2.0) ) ;
+       Y0 = -( GetIPtoOuterCoverDistance() - GetMicromegas2Thickness() / 2.0)  ;
      } 
     else // its an upper module
-      pos.SetY(-( GetIPtoOuterCoverDistance() - GetMicromegas2Thickness() - GetLeadToMicro2Gap()
-       -  GetLeadConverterThickness() -  GetMicro1ToLeadGap() - GetMicromegas1Thickness() / 2.0) ) ; 
+      Y0 = -( GetIPtoOuterCoverDistance() - GetMicromegas2Thickness() - GetLeadToMicro2Gap()
+       -  GetLeadConverterThickness() -  GetMicro1ToLeadGap() - GetMicromegas1Thickness() / 2.0) ; 
   }
 
   Float_t x, z ; 
   RelPosInModule(RelId, x, z) ; 
 
-  pos.SetX(x);
-  pos.SetZ(z);
+  pos.SetX(x) ;
+  pos.SetZ(z) ;
+  pos.SetY( TMath::Sqrt(x*x + z*z + Y0*Y0) ) ; 
+
 
 
    Float_t Phi           = GetPHOSAngle( PHOSModule) ; 
index 835d041..eb06b24 100644 (file)
@@ -23,6 +23,9 @@
 #include "AliGeometry.h"
 #include "AliPHOSRecPoint.h"
 
+static const TString kDegre("deg") ; 
+static const TString kRadian("rad") ; 
+
 class AliPHOSGeometry : public AliGeometry {
 
 public: 
@@ -46,6 +49,14 @@ public:
   // General
 
   Bool_t AbsToRelNumbering(const Int_t AbsId, Int_t * RelId) ;           // converts the absolute PHOS numbering to a relative 
+  void EmcModuleCoverage(const Int_t m, Double_t & tm, Double_t & tM, Double_t & pm, Double_t & pM, Option_t * opt = kRadian);    
+                                                                         // calculates the angular coverage in theta and phi of a EMC module
+  void EmcXtalCoverage(Double_t & theta, Double_t & phi, Option_t * opt = kRadian) ; 
+                                                                         // calculates the angular coverage in theta and phi of a 
+                                                                         // single crystal in a EMC module
+  void ImpactOnEmc(const Double_t theta, const Double_t phi, Int_t & ModuleNumber, Double_t & x, Double_t & z) ; 
+                                                                         // calculates the impact coordinates of a neutral particle  
+                                                                         // emitted in direction theta and phi in ALICE
   void   RelPosInModule(const Int_t * RelId, Float_t & y, Float_t & z) ; // gets the position of element (pad or Xtal) relative to 
                                                                          // center of PHOS module  
   void   RelPosInAlice(const Int_t AbsId, TVector3 &  pos) ;             // gets the position of element (pad or Xtal) relative to 
index 397584c..f784a06 100644 (file)
 
 // --- AliRoot header files ---
 #include "AliHit.h"
-#include <iostream.h>
+
+// --- Standard library ---
+
+#include <iostream>
 
 class AliPHOSHit : public AliHit {
 
index 3f75e65..e67ae9f 100644 (file)
 //////////////////////////////////////////////////////////////////////////////
 
 // --- ROOT system ---
-
+#include "TPad.h"
 // --- Standard library ---
 
-#include <iostream.h>
+#include <iostream>
+#include <cassert>
 
 // --- AliRoot header files ---
 
@@ -44,7 +45,7 @@ AliPHOSPpsdRecPoint::AliPHOSPpsdRecPoint(void)
 //____________________________________________________________________________
 AliPHOSPpsdRecPoint::~AliPHOSPpsdRecPoint(void) // dtor
 { 
-  delete fDigitsList ; 
+  //dtor  
 }
 
 //____________________________________________________________________________
@@ -55,16 +56,22 @@ void AliPHOSPpsdRecPoint::AddDigit(AliDigitNew & digit, Float_t Energy)
   
   
   if ( fMulDigit >= fMaxDigit ) { // increase the size of the lists 
-    int * tempo = new ( int[fMaxDigit*=2] ) ; 
+    fMaxDigit*=2 ; 
+    int * tempo = new ( int[fMaxDigit] ) ; 
     Int_t index ; 
     
     for ( index = 0 ; index < fMulDigit ; index++ )
       tempo[index] = fDigitsList[index] ;
     
-    delete fDigitsList ; 
-    fDigitsList = tempo ;
+    delete []  fDigitsList ; 
+    fDigitsList =  new ( int[fMaxDigit] ) ;
+   
+    for ( index = 0 ; index < fMulDigit ; index++ )
+      fDigitsList[index] = tempo[index] ;
+    delete [] tempo ;
   }
-  
+
   fDigitsList[fMulDigit++]  =  (int) &digit  ; 
   fAmp += Energy ; 
 }
@@ -205,6 +212,31 @@ Bool_t AliPHOSPpsdRecPoint::GetUp()
   
   return up ;
 }
+//______________________________________________________________________________
+void AliPHOSPpsdRecPoint::Paint(Option_t *)
+{
+//*-*-*-*-*-*-*-*-*-*-*Paint this ALiRecPoint as a TMarker  with its current attributes*-*-*-*-*-*-*
+//*-*                  =============================================
+   TVector3 pos(0.,0.,0.) ;
+   GetLocalPosition(pos) ;
+   Coord_t x = pos.X() ;
+   Coord_t y = pos.Z() ;
+   Color_t MarkerColor = 1 ;
+   Size_t  MarkerSize = 1. ;
+   Style_t MarkerStyle = 2 ;
+   if (GetUp()) 
+     MarkerStyle = 3 ;
+
+   if (!gPad->IsBatch()) {
+     gVirtualX->SetMarkerColor(MarkerColor);
+     gVirtualX->SetMarkerSize (MarkerSize);
+     gVirtualX->SetMarkerStyle(MarkerStyle);
+   }
+   gPad->SetAttMarkerPS(MarkerColor,MarkerStyle,MarkerSize);
+   gPad->PaintPolyMarker(1,&x,&y,"");
+
+
+}
 
 //____________________________________________________________________________
 void AliPHOSPpsdRecPoint::Print(Option_t * option) 
@@ -212,13 +244,23 @@ void AliPHOSPpsdRecPoint::Print(Option_t * option)
   cout << "AliPHOSPpsdRecPoint: " << endl ;
   
   AliPHOSDigit * digit ; 
   Int_t iDigit;
+  AliPHOSGeometry * PHOSGeom =  (AliPHOSGeometry *) fGeom ;
+
+  Float_t xi ;
+  Float_t zi ;
+  Int_t relid[4] ; 
 
   for(iDigit=0; iDigit<fMulDigit; iDigit++) {
     digit = (AliPHOSDigit *) fDigitsList[iDigit];
-    cout << "     digit Id          = " << digit->GetId()  
-         << "     digit Energy      = " << digit->GetAmp() << endl ;
+    PHOSGeom->AbsToRelNumbering(digit->GetId(), relid) ;
+    PHOSGeom->RelPosInModule(relid, xi, zi);
+    cout << " Id = " << digit->GetId() ;  
+    cout << "  Phos mod = " << relid[0] ;  
+    cout << "  PPSD mod = " << relid[1] ;  
+    cout << "  x = " << xi ;  
+    cout << "  z = " << zi ;  
+    cout << "   Energy = " << digit->GetAmp() << endl ;
   }
   cout << "       Multiplicity    = " << fMulDigit  << endl ;
 }
index af1846b..9ed2fc3 100644 (file)
@@ -35,8 +35,9 @@ public:
   void  GetLocalPosition(TVector3 &LPos) ; // computes the position in the module of the cluster center 
                                            //projection of ALICE axes on PHOS Module, y = 0 .
   Bool_t GetUp() ;               // true if cluster is in upper ppsd 
-  Bool_t      IsEmc(void) {return kFALSE ; } 
-  Bool_t  IsSortable() const { return kTRUE ; }
+  Bool_t IsEmc(void) {return kFALSE ; } 
+  Bool_t IsSortable() const { return kTRUE ; }
+  virtual void  Paint(Option_t * option="");
   void Print(Option_t * opt = "void") ; 
 
   //  AliPHOSPpsdRecPoint&  operator = (AliPHOSPpsdRecPoint Clu) ;
index c0f45d2..346b9de 100644 (file)
 //////////////////////////////////////////////////////////////////////////////
 
 // --- ROOT system ---
+#include "TPad.h"
 
 // --- Standard library ---
+#include <iostream>
+#include <cstdio>
 
 // --- AliRoot header files ---
 
@@ -28,6 +31,8 @@
 #include "AliPHOSDigit.h"
 #include "AliPHOSRecPoint.h"
 
+
+
 ClassImp(AliPHOSRecPoint)
 
 
@@ -44,6 +49,112 @@ AliPHOSRecPoint::~AliPHOSRecPoint()
 {
   // dtor
 }
+//____________________________________________________________________________
+Int_t AliPHOSRecPoint::DistancetoPrimitive(Int_t px, Int_t py)
+{
+//*-*-*-*-*-*-*-*-*-*-*Compute distance from point px,py to  a AliPHOSRecPoint considered as a Tmarker*-*-*-*-*-*
+//*-*                  ===========================================
+//  Compute the closest distance of approach from point px,py to this marker.
+//  The distance is computed in pixels units.
+//
+
+   TVector3 pos(0.,0.,0.) ;
+   GetLocalPosition( pos) ;
+   Float_t x =  pos.X() ;
+   Float_t y =  pos.Z() ;
+   const Int_t kMaxDiff = 10;
+   Int_t pxm  = gPad->XtoAbsPixel(x);
+   Int_t pym  = gPad->YtoAbsPixel(y);
+   Int_t dist = (px-pxm)*(px-pxm) + (py-pym)*(py-pym);
+
+   if (dist > kMaxDiff) return 9999;
+   return dist;
+}
+//___________________________________________________________________________
+ void AliPHOSRecPoint::Draw(Option_t *option)
+ {
+// //*-*-*-*-*-*-*-*-*-*-*Draw this AliPHOSRecPoint with its current attributes*-*-*-*-*-*-*
+// //*-*
+   //   assert(0==1);
+  AppendPad(option);
+ }
+
+//______________________________________________________________________________
+void AliPHOSRecPoint::ExecuteEvent(Int_t event, Int_t px, Int_t py)
+{
+//*-*-*-*-*-*-*-*-*-*-*Execute action corresponding to one event*-*-*-*
+//*-*                  =========================================
+// This member function is called when a AliPHOSRecPoint is clicked with the locator
+//
+// If Left button is clicked on AliPHOSRecPoint, the digits are switched on    
+// and switched off when the mouse button is released.
+//
+
+  //  static Int_t pxold, pyold;
+
+   static TGraph *  DigitGraph = 0 ;
+   static TPaveText* ClusterText = 0 ;
+
+   if (!gPad->IsEditable()) return;
+
+   switch (event) {
+
+
+   case kButton1Down:{
+     AliPHOSDigit * digit ;
+     AliPHOSGeometry * PHOSGeom =  (AliPHOSGeometry *) fGeom ;
+     Int_t iDigit;
+     Int_t relid[4] ;
+     Float_t xi[fMulDigit] ;
+     Float_t zi[fMulDigit] ;
+     for(iDigit=0; iDigit<fMulDigit; iDigit++) {
+       digit = (AliPHOSDigit *) fDigitsList[iDigit];
+       PHOSGeom->AbsToRelNumbering(digit->GetId(), relid) ;
+       PHOSGeom->RelPosInModule(relid, xi[iDigit], zi[iDigit]) ;
+     }
+
+     if (!DigitGraph) {
+       DigitGraph = new TGraph(fMulDigit,xi,zi);
+       DigitGraph-> SetMarkerStyle(5) ; 
+       DigitGraph-> SetMarkerSize(1.) ;
+       DigitGraph-> SetMarkerColor(1) ;
+       DigitGraph-> Draw("P") ;
+     }
+     if (!ClusterText) {
+  
+       TVector3 pos(0.,0.,0.) ;
+       GetLocalPosition(pos) ;
+       ClusterText = new TPaveText(pos.X()-10,pos.Z()+10,pos.X()+50,pos.Z()+35,"") ;
+       Text_t  line1[40] ;
+       Text_t  line2[40] ;
+       sprintf(line1,"Energy=%1.2f GeV",GetEnergy()) ;
+       sprintf(line2,"%d Digits",GetDigitsMultiplicity()) ;
+       ClusterText ->AddText(line1) ;
+       ClusterText ->AddText(line2) ;
+       ClusterText ->Draw("");
+     }
+     gPad->Update() ; 
+     Print() ;
+  }
+
+     break;
+
+   case kButton1Up:
+     if (DigitGraph) {
+       delete DigitGraph  ;
+       DigitGraph = 0 ;
+     }
+     if (ClusterText) {
+       delete ClusterText ;
+       ClusterText = 0 ;
+     }
+     
+     break;
+     
+   }
+}
+
 
 //____________________________________________________________________________
 Int_t AliPHOSRecPoint::GetPHOSMod()
@@ -59,3 +170,24 @@ Int_t AliPHOSRecPoint::GetPHOSMod()
   fPHOSMod = relid[0];
   return fPHOSMod ;
 }
+//______________________________________________________________________________
+void AliPHOSRecPoint::Paint(Option_t *)
+{
+//*-*-*-*-*-*-*-*-*-*-*Paint this ALiRecPoint as a TMarker  with its current attributes*-*-*-*-*-*-*
+//*-*                  =============================================
+   TVector3 pos(0.,0.,0.)  ;
+   GetLocalPosition(pos)   ;
+   Coord_t x = pos.X()     ;
+   Coord_t y = pos.Z()     ;
+   Color_t MarkerColor = 1 ;
+   Size_t  MarkerSize = 1. ;
+   Style_t MarkerStyle = 5 ;
+
+   if (!gPad->IsBatch()) {
+     gVirtualX->SetMarkerColor(MarkerColor) ;
+     gVirtualX->SetMarkerSize (MarkerSize)  ;
+     gVirtualX->SetMarkerStyle(MarkerStyle) ;
+   }
+   gPad->SetAttMarkerPS(MarkerColor,MarkerStyle,MarkerSize) ;
+   gPad->PaintPolyMarker(1,&x,&y,"") ;
+}
index 38f08cc..b28019e 100644 (file)
 
 // --- ROOT system ---
 
+#include "TMarker.h"
+#include "TGraph.h"
+#include "TPaveText.h"
+
 // --- Standard library ---
 
-#include "assert.h"
+#include <cassert>
 
 // --- AliRoot header files ---
 
@@ -29,20 +33,24 @@ public:
 
   AliPHOSRecPoint() ;                   // ctor         
   virtual ~AliPHOSRecPoint() ;          // dtor
-  virtual  void AddDigit(AliDigitNew & digit, Float_t Energy) = 0 ; 
-  virtual Int_t GetPHOSMod(void) ;
+  virtual  void   AddDigit(AliDigitNew & digit, Float_t Energy) = 0 ; 
+  virtual Int_t  DistancetoPrimitive(Int_t px, Int_t py);
+  virtual void   Draw(Option_t * option="") ;
+  virtual void   ExecuteEvent(Int_t event, Int_t px, Int_t py) ;
+  virtual Int_t  GetPHOSMod(void) ;
   virtual Bool_t IsEmc(void){return kTRUE ;} 
-  virtual void  Print(Option_t * opt = "void") {}  
+  virtual  void  Paint(Option_t * option="");
+  virtual void   Print(Option_t * opt = "void") {} 
 
   virtual Int_t   Compare(TObject * obj) {  assert(0==1) ; }   
   virtual Bool_t  IsSortable() const { return kTRUE ; }  
 
 protected:
-
-  Int_t  fPHOSMod;
+  
+  Int_t      fPHOSMod ;
 
 public:
-  
   ClassDef(AliPHOSRecPoint,1)
  
 };
index 98d5b55..422eb29 100644 (file)
@@ -41,7 +41,7 @@ AliPHOSReconstructioner::AliPHOSReconstructioner()
 //____________________________________________________________________________
 AliPHOSReconstructioner::AliPHOSReconstructioner(AliPHOSClusterizer & Clusterizer, AliPHOSTrackSegmentMaker & Tracker)
 {
-  fClusterizer         = &Clusterizer ;
+  fClusterizer        = &Clusterizer ;
   fTrackSegmentMaker  = &Tracker ;
 } 
 
@@ -49,12 +49,16 @@ AliPHOSReconstructioner::AliPHOSReconstructioner(AliPHOSClusterizer & Clusterize
 AliPHOSReconstructioner::~AliPHOSReconstructioner() 
 {
   // dtor
+ fClusterizer = 0 ; 
+ fTrackSegmentMaker = 0 ; 
 }  
 
 //____________________________________________________________________________
- void AliPHOSReconstructioner:: Make(TClonesArray * dl, RecPointsList * emccl, RecPointsList * ppsdl, TrackSegmentsList * trsl)
+void AliPHOSReconstructioner::Make(TClonesArray * dl, RecPointsList * emccl, RecPointsList * ppsdl, TrackSegmentsList * trsl)
 {
+  cout << "Make1" << endl;
   fClusterizer->MakeClusters(dl, emccl, ppsdl);
-
-  fTrackSegmentMaker->MakeTrackSegments(dl,emccl,ppsdl,trsl) ;
+  cout << "Make2" << endl;
+  fTrackSegmentMaker->MakeTrackSegments(dl, emccl, ppsdl, trsl) ;
+  cout << "Make3" << endl;
 }
index f3fb4ec..9c88696 100644 (file)
@@ -36,9 +36,8 @@ public:
 
 private:
   
-  AliPHOSClusterizer * fClusterizer ;  // Method of clusterization 
-
-  AliPHOSTrackSegmentMaker * fTrackSegmentMaker ;  // 
+  AliPHOSClusterizer * fClusterizer ;             // Method for clusterization 
+  AliPHOSTrackSegmentMaker * fTrackSegmentMaker ; // Method for track segments finding 
   
 
 public:
index f1e871b..feb9b13 100644 (file)
 // --- ROOT system ---
  
 #include "TVector3.h"
+#include "TPad.h"
 
 // --- Standard library ---
 
-#include "iostream.h"
+#include <iostream>
 
 // --- AliRoot header files ---
 
@@ -58,6 +59,82 @@ AliPHOSTrackSegment::~AliPHOSTrackSegment() // dtor
 }
 
 //____________________________________________________________________________
+Int_t AliPHOSTrackSegment::DistancetoPrimitive(Int_t px, Int_t py)
+{
+//*-*-*-*-*-*-*-*-*-*-*Compute distance from point px,py to  a AliPHOSTrackSegment considered as a Tmarker*-*-*-*-*-*
+//*-*                  ===========================================
+//  Compute the closest distance of approach from point px,py to this marker.
+//  The distance is computed in pixels units.
+//
+
+   TVector3 pos(0.,0.,0.) ;
+   fEmcRecPoint->GetLocalPosition( pos) ;
+   Float_t x =  pos.X() ;
+   Float_t y =  pos.Z() ;
+   const Int_t kMaxDiff = 10;
+   Int_t pxm  = gPad->XtoAbsPixel(x);
+   Int_t pym  = gPad->YtoAbsPixel(y);
+   Int_t dist = (px-pxm)*(px-pxm) + (py-pym)*(py-pym);
+
+   if (dist > kMaxDiff) return 9999;
+   return dist;
+}
+
+//___________________________________________________________________________
+ void AliPHOSTrackSegment::Draw(Option_t *option)
+ {
+// //*-*-*-*-*-*-*-*-*-*-*Draw this AliPHOSTrackSegment with its current attributes*-*-*-*-*-*-*
+// //*-*
+   // assert(0==1);
+  AppendPad(option);
+ }
+
+//______________________________________________________________________________
+void AliPHOSTrackSegment::ExecuteEvent(Int_t event, Int_t px, Int_t py)
+{
+//*-*-*-*-*-*-*-*-*-*-*Execute action corresponding to one event*-*-*-*
+//*-*                  =========================================
+//  This member function is called when a AliPHOSTrackSegment is clicked with the locator
+//
+//  If Left button is clicked on AliPHOSRecPoint, the digits are switched on    
+//  and switched off when the mouse button is released.
+//
+   static TPaveText* TrackSegmentText = 0 ;
+
+   if (!gPad->IsEditable()) return;
+
+   switch (event) {
+
+   case kButton1Down:{
+    
+     if (!TrackSegmentText) {
+  
+       TVector3 pos(0.,0.,0.) ;
+       fEmcRecPoint->GetLocalPosition(pos) ;
+       TrackSegmentText = new TPaveText(pos.X()-10,pos.Z()+10,pos.X()+50,pos.Z()+35,"") ;
+       Text_t  line1[40] ;
+       if (GetPartType() == 0 ) sprintf(line1,"PHOTON") ;
+       if (GetPartType() == 1 ) sprintf(line1,"NEUTRAL HADRON") ;
+       if (GetPartType() == 2 ) sprintf(line1,"CHARGED HADRON") ;
+       if (GetPartType() == 3 ) sprintf(line1,"ELECTRON") ;
+       TrackSegmentText ->AddText(line1) ;
+       TrackSegmentText ->Paint("");
+     }
+   }
+
+     break;
+
+   case kButton1Up:
+     if (TrackSegmentText) {
+       delete TrackSegmentText ;
+       TrackSegmentText = 0 ;
+     }
+     break;  
+   }
+}
+
+
+//____________________________________________________________________________
 Float_t AliPHOSTrackSegment::GetDistanceInPHOSPlane()
 {
  
@@ -152,6 +229,34 @@ void AliPHOSTrackSegment::GetPosition( TVector3 & pos )
   fEmcRecPoint->GetGlobalPosition(pos, Dummy) ;
 }
 
+//______________________________________________________________________________
+void AliPHOSTrackSegment::Paint(Option_t *)
+{
+//*-*-*-*-*-*-*-*-*-*-*Paint this ALiPHOSTrackSegment as a TMarker  with its current attributes*-*-*-*-*-*-*
+//*-*                  =============================================
+   TVector3 pos(0.,0.,0.)  ;
+   fEmcRecPoint->GetLocalPosition(pos)   ;
+   Coord_t x = pos.X()     ;
+   Coord_t y = pos.Z()     ;
+   Color_t MarkerColor = 1 ;
+   Size_t  MarkerSize = 1. ;
+   Style_t MarkerStyle = 29 ;
+
+   if (GetPartType() == 0 ) MarkerStyle = 20 ;
+   if (GetPartType() == 1 ) MarkerStyle = 21 ;
+   if (GetPartType() == 2 ) MarkerStyle = 22 ;
+   if (GetPartType() == 3 ) MarkerStyle = 23 ;
+
+   if (!gPad->IsBatch()) {
+     gVirtualX->SetMarkerColor(MarkerColor) ;
+     gVirtualX->SetMarkerSize (MarkerSize)  ;
+     gVirtualX->SetMarkerStyle(MarkerStyle) ;
+   }
+   gPad->SetAttMarkerPS(MarkerColor,MarkerStyle,MarkerSize) ;
+   gPad->PaintPolyMarker(1,&x,&y,"") ;
+}
+
+
 //____________________________________________________________________________
 void AliPHOSTrackSegment::Print()
 {
index 1ae2e55..7a78504 100644 (file)
@@ -36,11 +36,17 @@ public:
                   AliPHOSPpsdRecPoint * PpsdLow  ) ;                    
   virtual ~AliPHOSTrackSegment() ; // dtor 
 
+  virtual Int_t  DistancetoPrimitive(Int_t px, Int_t py);
+  virtual void   Draw(Option_t * option="") ;
+  virtual void   ExecuteEvent(Int_t event, Int_t px, Int_t py);
   Int_t GetPartType() ;          // Returns 0 - gamma, 1 - e+, e- ;  2 - neutral hadron ; 3 - charged hadron
-  Float_t GetEnergy(){ return fEmcRecPoint->GetTotalEnergy() ;}   // Returs energy in EMC  
+  Float_t GetEnergy(){ return fEmcRecPoint->GetTotalEnergy() ;}   // Returs energy in EMC
+  
   Float_t GetDistanceInPHOSPlane(void) ;    // computes in PHOS plane the relative position between EMC and PPSD clusters 
+  virtual Int_t  GetPHOSMod(void) {return fEmcRecPoint->GetPHOSMod();  }
   Bool_t GetMomentumDirection( TVector3 & dir ) ;   // True if determined
   void GetPosition( TVector3 & pos ) ;              // Returns positions of hits
+  virtual  void  Paint(Option_t * option="");
   void Print() ;
   void SetDispersionCutOff(Float_t Dcut) {fCutOnDispersion = Dcut ; }    
   
index bcb4b38..9cd74f1 100644 (file)
@@ -25,7 +25,7 @@
 
 // --- Standard library ---
 
-#include "iostream.h"
+#include <iostream>
 
 // --- AliRoot header files ---
 
index f5e1f52..fc531e8 100644 (file)
  **************************************************************************/
 
 //_________________________________________________________________________
-// A brief description of the class
-//*-- Author : Yves Schutz  SUBATECH 
+// Algorithm class to construct track segments connection RecPoints in 
+// EMCA and Ppsd. Unfolds also the clusters in EMCA. 
+//*-- Author : D. Peressounko  SUBATECH 
 //////////////////////////////////////////////////////////////////////////////
 
 // --- ROOT system ---
 
 #include "TObjArray.h"
 #include "TClonesArray.h"
-#include "TMinuit.h"
+#include "TObjectTable.h"
 
 // --- Standard library ---
 
-#include "iostream.h"
+#include <iostream>
+#include <cassert>
 
 // --- AliRoot header files ---
 
 #include "AliPHOSv0.h"
 #include "AliRun.h"
 
+extern void UnfoldingChiSquare(Int_t &NPar, Double_t *Grad, Double_t & fret, Double_t *x, Int_t iflag) ; 
+
 ClassImp( AliPHOSTrackSegmentMakerv1) 
 
 
 //____________________________________________________________________________
- AliPHOSTrackSegmentMakerv1:: AliPHOSTrackSegmentMakerv1() // ctor
+ AliPHOSTrackSegmentMakerv1::AliPHOSTrackSegmentMakerv1() 
 {
+  // ctor
   fR0 = 4. ;   
   AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ;
   //clusters are sorted in "rows" and "columns" of width geom->GetCrystalSize(0),
   fDelta = fR0 + geom->GetCrystalSize(0) ;
+  fMinuit = new TMinuit(100) ; 
 }
 
 //____________________________________________________________________________
+ AliPHOSTrackSegmentMakerv1::~AliPHOSTrackSegmentMakerv1()
+{ 
+  // dtor
+  delete fMinuit ; 
+}
+//____________________________________________________________________________
 Bool_t  AliPHOSTrackSegmentMakerv1::FindFit(AliPHOSEmcRecPoint * emcRP, int * maxAt, Float_t * maxAtEnergy,
-                                   Int_t NPar, Float_t * FitParametres)
-{ //Calls TMinuit for fitting cluster with several maxima 
-
+                                   Int_t NPar, Float_t * FitParameters)
+{ 
+  // gObjectTable->Print() ; 
+  // Calls TMinuit for fitting cluster with several maxima 
   AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ;
-  TMinuit *gMinuit = new TMinuit(NPar);  //initialize TMinuit with a maximum of 5 params
-  gMinuit->SetPrintLevel(-1) ;           //No PRIntout
-  gMinuit->SetFCN(UnfoldingChiSquare );  //To set the address of the minimization function 
-  gMinuit->SetObjectFit(emcRP) ;   //To tranfer pointer to UnfoldingChiSquare
+  assert( NPar < 100 ) ; 
 
-  //filling initial values for fit parameters
+  gMinuit->SetPrintLevel(-1) ;           // No Printout
+  gMinuit->SetFCN(UnfoldingChiSquare) ;  // To set the address of the minimization function 
+  gMinuit->SetObjectFit(emcRP) ;         // To tranfer pointer to UnfoldingChiSquare
+
+  // filling initial values for fit parameters
   AliPHOSDigit * digit ;
-  Int_t ierflg = 0; 
-  Int_t index = 0 ;
+
+  Int_t ierflg  = 0; 
+  Int_t index   = 0 ;
   Int_t NDigits = (Int_t) NPar / 3 ;
+
   Int_t iDigit ;
-  for(iDigit = 0 ; iDigit < NDigits ; iDigit ++){
+
+
+  for(iDigit = 0 ; iDigit < NDigits ; iDigit++){
     digit = (AliPHOSDigit *) maxAt[iDigit]; 
 
     Int_t RelId[4] ;
     Float_t x ;
     Float_t z ;
-    geom->AbsToRelNumbering(digit->GetId(),RelId) ;
-    geom->RelPosInModule(RelId,x,z) ;
+    geom->AbsToRelNumbering(digit->GetId(), RelId) ;
+    geom->RelPosInModule(RelId, x, z) ;
 
     Float_t Energy = maxAtEnergy[iDigit] ;
 
-    gMinuit->mnparm(index++, " ",  x, 0.1, 0, 0, ierflg) ;  
+    gMinuit->mnparm(index, "x",  x, 0.1, 0, 0, ierflg) ;
+    index++ ;   
     if(ierflg != 0){ 
       cout << "PHOS Unfolding>  Unable to set initial value for fit procedure : x = " << x << endl ;
       return kFALSE;
     }
-    gMinuit->mnparm(index++, " ",  z, 0.1, 0, 0, ierflg) ;
+    gMinuit->mnparm(index, "z",  z, 0.1, 0, 0, ierflg) ;
+    index++ ;   
     if(ierflg != 0){
       cout << "PHOS Unfolding>  Unable to set initial value for fit procedure : z = " << z << endl ;
       return kFALSE;
     }
-    gMinuit->mnparm(index++, " ",  Energy , 0.05*Energy, 0., 4.*Energy, ierflg) ;
+    gMinuit->mnparm(index, "Energy",  Energy , 0.05*Energy, 0., 4.*Energy, ierflg) ;
+    index++ ;   
     if(ierflg != 0){
       cout << "PHOS Unfolding>  Unable to set initial value for fit procedure : Energy = " << Energy << endl ;      
       return kFALSE;
 }
   }
 
-  Double_t p0=0.1; //"Tolerance" Evaluation stops when EDM = 0.0001*p0 ; The number of function call slightly
-                  //depends on it. 
-  Double_t p1 = 1.;
-  
-  gMinuit->mnexcm("SET STR", 0, 0, ierflg) ;   //force TMinuit to reduce function calls  
-  gMinuit->mnexcm("SET GRA", &p1, 1, ierflg) ; //force TMinuit to use my gradient  
+  Double_t p0 = 0.1 ; // "Tolerance" Evaluation stops when EDM = 0.0001*p0 ; The number of function call slightly
+                      //  depends on it. 
+  Double_t p1 = 1.0 ;
+  Double_t p2 = 0.0 ;
+
+  gMinuit->mnexcm("SET STR", &p2, 0, ierflg) ;   // force TgMinuit to reduce function calls  
+  gMinuit->mnexcm("SET GRA", &p1, 1, ierflg) ;   // force TMinuit to use my gradient  
   gMinuit->SetMaxIterations(5);
-  gMinuit->mnexcm("SET NOW", 0 , 0, ierflg) ; //No Warnings
-  gMinuit->mnexcm("MIGRAD", &p0, 0, ierflg);   // minimize 
-  if(ierflg == 4){  //Minimum not found   
-      cout << "PHOS Unfolding>  Fit not converged, cluster abondoned "<< endl ;      
+  gMinuit->mnexcm("SET NOW", &p2 , 0, ierflg) ;  // No Warnings
+  gMinuit->mnexcm("MIGRAD", &p0, 0, ierflg) ;    // minimize 
+  if(ierflg == 4){  // Minimum not found   
+    cout << "PHOS Unfolding>  Fit not converged, cluster abandoned "<< endl ;      
     return kFALSE ;
   }            
   for(index = 0; index < NPar; index++){
     Double_t err ;
     Double_t val ;
-    gMinuit->GetParameter(index, val, err) ;    //Returns value and error of parameter index
-    FitParametres[index] = val ;
+    gMinuit->GetParameter(index, val, err) ;    // Returns value and error of parameter index
+    FitParameters[index] = val ;
    }
-  gMinuit->Delete() ;
   return kTRUE;
+
 }
+
 //____________________________________________________________________________
 void  AliPHOSTrackSegmentMakerv1::FillOneModule(DigitsList * Dl, RecPointsList * emcIn, TObjArray * emcOut, 
                                        RecPointsList * ppsdIn, TObjArray * ppsdOutUp,
-                                       TObjArray * ppsdOutLow, Int_t &PHOSMod, Int_t & emcStopedAt, 
+                                       TObjArray * ppsdOutLow, Int_t & PHOSMod, Int_t & emcStopedAt, 
                                        Int_t & ppsdStopedAt)
-{// Unfold clusters and fill xxxOut arrais with clusters from ome PHOS modeule
-  AliPHOSEmcRecPoint * emcRecPoint  ; 
+{
+  // Unfold clusters and fill xxxOut arrays with clusters from one PHOS module
+  AliPHOSEmcRecPoint *  emcRecPoint  ; 
   AliPHOSPpsdRecPoint * ppsdRecPoint ;
   Int_t index ;
-
+  cout << "Fill 1" << endl ;
   Int_t NemcUnfolded = emcIn->GetEntries() ;
   for(index = emcStopedAt; index < NemcUnfolded; index++){
-
     emcRecPoint = (AliPHOSEmcRecPoint *) (*emcIn)[index] ;
-    
+    cout << "Fill 2" << endl ;
+   
     if(emcRecPoint->GetPHOSMod() != PHOSMod )  
-      break ;
+       break ;
+    
     
     Int_t NMultipl = emcRecPoint->GetMultiplicity() ; 
     int maxAt[NMultipl] ;
     Float_t maxAtEnergy[NMultipl] ;
-    Int_t Nmax = emcRecPoint->GetNumberOfLocalMax(maxAt,maxAtEnergy) ;
+    Int_t Nmax = emcRecPoint->GetNumberOfLocalMax(maxAt, maxAtEnergy) ;
+
+    
 
-    if(Nmax<=1)     // if cluster is very flat, so that no prononsed maximum, then Nmax = 0 
+    if(Nmax <= 1)     // if cluster is very flat, so that no prononsed maximum, then Nmax = 0 
       emcOut->Add(emcRecPoint) ;
     else {
       UnfoldClusters(Dl, emcIn, emcRecPoint, Nmax, maxAt, maxAtEnergy, emcOut) ;
       emcIn->Remove(emcRecPoint); 
+      cout << "Fill 3" << endl ;
       emcIn->Compress() ;
       NemcUnfolded-- ;
       index-- ;
@@ -152,7 +181,8 @@ void  AliPHOSTrackSegmentMakerv1::FillOneModule(DigitsList * Dl, RecPointsList *
 
   for(index = ppsdStopedAt; index < ppsdIn->GetEntries(); index++){
     ppsdRecPoint = (AliPHOSPpsdRecPoint *) (*ppsdIn)[index] ;
-    if(ppsdRecPoint->GetPHOSMod() != PHOSMod )   break ;
+    if(ppsdRecPoint->GetPHOSMod() != PHOSMod )   
+      break ;
     if(ppsdRecPoint->GetUp() ) 
       ppsdOutUp->Add(ppsdRecPoint) ;
     else  
@@ -272,6 +302,8 @@ void  AliPHOSTrackSegmentMakerv1::MakePairs(TObjArray * EmcRecPoints, TObjArray
   AliPHOSPpsdRecPoint * ppsdLow ;
   AliPHOSPpsdRecPoint * ppsdUp ;
 
+  AliPHOSRecPoint * NullPointer = 0 ;
+
   while ( (linkLow =  (AliPHOSLink *)nextLow() ) ){
     emc = (AliPHOSEmcRecPoint *) EmcRecPoints->At(linkLow->GetEmc()) ;
     ppsdLow = (AliPHOSPpsdRecPoint *) PpsdRecPointsLow->At(linkLow->GetPpsd()) ;
@@ -289,11 +321,11 @@ void  AliPHOSTrackSegmentMakerv1::MakePairs(TObjArray * EmcRecPoints, TObjArray
         nextUp.Reset();
          AliPHOSTrackSegment * subtr = new AliPHOSTrackSegment(emc, ppsdUp, ppsdLow ) ;
         trsl->Add(subtr) ;  
-        EmcRecPoints->RemoveAt(linkLow->GetEmc()) ;      
-        PpsdRecPointsLow->RemoveAt(linkLow->GetPpsd()) ;
+        EmcRecPoints->AddAt(NullPointer,linkLow->GetEmc()) ;     
+        PpsdRecPointsLow->AddAt(NullPointer,linkLow->GetPpsd()) ;
         
         if(ppsdUp)  
-          PpsdRecPointsUp->RemoveAt(linkUp->GetPpsd()) ;
+          PpsdRecPointsUp->AddAt(NullPointer,linkUp->GetPpsd()) ;
         
     } // if NLocMax
   } 
@@ -302,8 +334,8 @@ void  AliPHOSTrackSegmentMakerv1::MakePairs(TObjArray * EmcRecPoints, TObjArray
   nextEmc.Reset() ;
 
   while( (emc = (AliPHOSEmcRecPoint*)nextEmc()) ){ //to create pairs if no PpsdLow
-    ppsdLow = NULL ; 
-    ppsdUp = NULL ;
+    ppsdLow = 0 ; 
+    ppsdUp  = 0 ;
     
     while ( (linkUp =  (AliPHOSLink *)nextUp() ) ){
       
@@ -317,8 +349,7 @@ void  AliPHOSTrackSegmentMakerv1::MakePairs(TObjArray * EmcRecPoints, TObjArray
     trsl->Add(subtr) ;   
  
     if(ppsdUp)  
-      PpsdRecPointsUp->RemoveAt(linkUp->GetPpsd()) ;
-    
+      PpsdRecPointsUp->AddAt(NullPointer,linkUp->GetPpsd()) ;
   }
      
 }
@@ -327,15 +358,15 @@ void  AliPHOSTrackSegmentMakerv1::MakePairs(TObjArray * EmcRecPoints, TObjArray
 void  AliPHOSTrackSegmentMakerv1::MakeTrackSegments(DigitsList * DL, RecPointsList * emcl, 
                                        RecPointsList * ppsdl, TrackSegmentsList * trsl)
 {
-  //main function, does the job
+  // main function, does the job
 
-  Int_t PHOSMod    = 1 ;
-  Int_t emcStopedAt = 0 ; 
+  Int_t PHOSMod      = 1 ;
+  Int_t emcStopedAt  = 0 ; 
   Int_t ppsdStopedAt = 0 ; 
   
-  TObjArray * EmcRecPoints = new TObjArray(100) ;     //these arrays keeps pointers 
-  TObjArray * PpsdRecPointsUp = new TObjArray(100) ;  //on RecPoints, which are 
-  TObjArray * PpsdRecPointsLow = new TObjArray(100) ; //kept in TClonesArray's emcl and ppsdl
+  TObjArray * EmcRecPoints     = new TObjArray(100) ;  // these arrays keep pointers 
+  TObjArray * PpsdRecPointsUp  = new TObjArray(100) ;  // to RecPoints, which are 
+  TObjArray * PpsdRecPointsLow = new TObjArray(100) ;  // kept in TClonesArray's emcl and ppsdl
   
   
   TClonesArray * LinkLowArray = new TClonesArray("AliPHOSLink", 100);
@@ -344,23 +375,46 @@ void  AliPHOSTrackSegmentMakerv1::MakeTrackSegments(DigitsList * DL, RecPointsLi
   AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ;
   
   while(PHOSMod <= geom->GetNModules() ){
+
+    cout << PHOSMod << " Track1 " << endl ;
     
     FillOneModule(DL, emcl, EmcRecPoints, ppsdl, PpsdRecPointsUp, PpsdRecPointsLow, PHOSMod , emcStopedAt, ppsdStopedAt) ;
-   
-    MakeLinks(EmcRecPoints,PpsdRecPointsUp, PpsdRecPointsLow, LinkLowArray, LinkUpArray) ; 
+    cout << PHOSMod << " Track2 " << endl ;
+    MakeLinks(EmcRecPoints, PpsdRecPointsUp, PpsdRecPointsLow, LinkLowArray, LinkUpArray) ; 
 
-    MakePairs(EmcRecPoints,PpsdRecPointsUp, PpsdRecPointsLow, LinkLowArray, LinkUpArray, trsl) ;
+    cout << PHOSMod << " Track3 " << endl ;
+    MakePairs(EmcRecPoints, PpsdRecPointsUp, PpsdRecPointsLow, LinkLowArray, LinkUpArray, trsl) ;
  
     EmcRecPoints->Clear() ;
     PpsdRecPointsUp->Clear() ;
+  
     PpsdRecPointsLow->Clear() ;
-    LinkUpArray->Delete();
-    LinkLowArray->Delete();
+
+    LinkUpArray->Clear();
+   
+    LinkLowArray->Clear();
+   
   }
+  delete EmcRecPoints ; 
+  EmcRecPoints = 0 ; 
+
+  delete PpsdRecPointsUp ; 
+  PpsdRecPointsUp = 0 ; 
+
+  delete PpsdRecPointsLow ; 
+  PpsdRecPointsLow = 0 ; 
+
+  delete LinkUpArray ; 
+  LinkUpArray = 0  ; 
+
+  delete LinkLowArray ; 
+  LinkLowArray = 0 ; 
 }
 
 //____________________________________________________________________________
-Double_t  AliPHOSTrackSegmentMakerv1::ShowerShape(Double_t r){ 
+Double_t  AliPHOSTrackSegmentMakerv1::ShowerShape(Double_t r)
+{ 
 // If you change this function, change also gradiend evaluation  in ChiSquare()
   Double_t r4 = r*r*r*r ;
   Double_t r295 = TMath::Power(r, 2.95) ;
@@ -372,13 +426,14 @@ Double_t  AliPHOSTrackSegmentMakerv1::ShowerShape(Double_t r){
 void  AliPHOSTrackSegmentMakerv1::UnfoldClusters(DigitsList * DL, RecPointsList * emcIn,  AliPHOSEmcRecPoint * iniEmc, 
                                         Int_t Nmax, int * maxAt, Float_t * maxAtEnergy, TObjArray * emcList)
 { 
-  //fits cluster with Nmax overlapping showers 
+  // fits cluster with Nmax overlapping showers 
   
   Int_t NPar = 3 * Nmax ;
   Float_t FitParameters[NPar] ;
   AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ;
-  
-  if( !FindFit(iniEmc, maxAt, maxAtEnergy, NPar, FitParameters) )  //Fit failed, return and remove cluster
+
+  Bool_t rv = FindFit(iniEmc, maxAt, maxAtEnergy, NPar, FitParameters) ;
+  if( !rv )  // Fit failed, return and remove cluster
     return ;
   
   Float_t xDigit ;
@@ -440,7 +495,7 @@ void  AliPHOSTrackSegmentMakerv1::UnfoldClusters(DigitsList * DL, RecPointsList
       Distance =  TMath::Sqrt(Distance) ;
       Ratio = Epar * ShowerShape(Distance) / Efit[iDigit] ; 
       eDigit = emcEnergies[iDigit] * Ratio ;
-      emcRP->AddDigit( *digit,eDigit ) ;
+      emcRP->AddDigit( *digit, eDigit ) ;
     }
 
     emcList->Add(emcRP) ;
@@ -448,26 +503,28 @@ void  AliPHOSTrackSegmentMakerv1::UnfoldClusters(DigitsList * DL, RecPointsList
   }
 }
 //______________________________________________________________________________
-void  AliPHOSTrackSegmentMakerv1::UnfoldingChiSquare(Int_t &NPar, Double_t *Grad, Double_t & fret, Double_t *x, Int_t iflag)
+void UnfoldingChiSquare(Int_t &NPar, Double_t *Grad, Double_t & fret, Double_t *x, Int_t iflag)
 {
-// NUmber of paramters, Gradient , Chi squared, parameters, what to do
+
+// Number of paramters, Gradient , Chi squared, parameters, what to do
+
   AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ;
-  AliPHOSTrackSegmentMakerv1 TrS ;
 
-  AliPHOSEmcRecPoint * emcRP = (AliPHOSEmcRecPoint *) gMinuit->GetObjectFit() ; //EmcRecPoint to fit
+  AliPHOSEmcRecPoint * emcRP = (AliPHOSEmcRecPoint *) gMinuit->GetObjectFit() ; // EmcRecPoint to fit
   int * emcDigits = emcRP->GetDigitsList() ;
   Float_t * emcEnergies = emcRP->GetEnergiesList() ;
   fret = 0. ;     
   Int_t iparam ;
 
-  if(iflag==2) 
-    for(iparam = 0 ; iparam < NPar ; iparam ++)    
-      Grad[iparam] = 0 ; //Will evaluate gradient
+  if(iflag == 2)
+    for(iparam = 0 ; iparam < NPar ; iparam++)    
+      Grad[iparam] = 0 ; // Will evaluate gradient
+  
   Double_t Efit ;  
-
+  
   AliPHOSDigit * digit ;
   Int_t iDigit = 0 ;
+
   while ( (digit = (AliPHOSDigit *)emcDigits[iDigit] )){
     Int_t RelId[4] ;
     Float_t xDigit ;
@@ -475,46 +532,52 @@ void  AliPHOSTrackSegmentMakerv1::UnfoldingChiSquare(Int_t &NPar, Double_t *Grad
     geom->AbsToRelNumbering(digit->GetId(), RelId) ;
     geom->RelPosInModule(RelId, xDigit, zDigit) ;
     
-    if(iflag == 2){  //calculate gradient
-      Int_t iParam = 0 ;
-      Efit = 0 ;
-      while(iParam < NPar ){
-       Double_t Distance = TMath::Sqrt( (xDigit - x[iParam]) * (xDigit - x[iParam]) + 
-                                       (zDigit - x[++iParam]) * (zDigit - x[iParam]) ) ;
-       Efit += x[++iParam] * TrS.ShowerShape(Distance) ;
-       iParam++ ;
-      }
-      Double_t sum = 2. * (Efit - emcEnergies[iDigit]) / emcEnergies[iDigit] ; //Here we assume, that sigma = sqrt(E) 
-      iParam = 0 ;
-      while(iParam < NPar ){
-       Double_t xpar = x[iParam] ;
-       Double_t zpar = x[iParam+1] ;
-       Double_t Epar = x[iParam+2] ;
-       Double_t dr = TMath::Sqrt( (xDigit - xpar) * (xDigit - xpar) + (zDigit - zpar) * (zDigit - zpar) );
-       Double_t shape = sum * TrS.ShowerShape(dr) ;
-       Double_t r4 = dr*dr*dr*dr ;
-       Double_t r295 = TMath::Power(dr,2.95) ;
-       Double_t deriv =-4. * dr*dr * ( 2.32 / ( (2.32 + 0.26 * r4) * (2.32 + 0.26 * r4) ) +
-                                  0.0316 * (1. + 0.0171 * r295) / ( ( 1. + 0.0652 * r295) * (1. + 0.0652 * r295) ) ) ;
-       
-       Grad[iParam++] += Epar * shape * deriv * (xpar - xDigit) ;  // Derivative over x    
-       Grad[iParam++] += Epar * shape * deriv * (zpar - zDigit) ;  // Derivative over z         
-       Grad[iParam++] += shape ;                           // Derivative over energy           
-      }
-    }
-    Efit = 0;
-    iparam = 0 ;
-    while(iparam < NPar ){
-      Double_t xpar = x[iparam] ;
-      Double_t zpar = x[iparam+1] ;
-      Double_t Epar = x[iparam+2] ;
-      iparam += 3 ;
-      Double_t Distance = (xDigit - xpar) * (xDigit - xpar) + (zDigit - zpar) * (zDigit - zpar)  ;
-      Distance =  TMath::Sqrt(Distance) ;
-      Efit += Epar * TrS.ShowerShape(Distance) ;
-    }
-    fret += (Efit-emcEnergies[iDigit])*(Efit-emcEnergies[iDigit])/emcEnergies[iDigit] ; 
-    //Here we assume, that sigma = sqrt(E)
-    iDigit++ ;
+     if(iflag == 2){  // calculate gradient
+       Int_t iParam = 0 ;
+       Efit = 0 ;
+       while(iParam < NPar ){
+        Double_t Distance = (xDigit - x[iParam]) * (xDigit - x[iParam]) ;
+        iParam++ ; 
+        Distance += (zDigit - x[iParam]) * (zDigit - x[iParam]) ; 
+        Distance = TMath::Sqrt( Distance ) ; 
+        iParam++ ;      
+        Efit += x[iParam] * AliPHOSTrackSegmentMakerv1::ShowerShape(Distance) ;
+        iParam++ ;
+       }
+       Double_t sum = 2. * (Efit - emcEnergies[iDigit]) / emcEnergies[iDigit] ; // Here we assume, that sigma = sqrt(E) 
+       iParam = 0 ;
+       while(iParam < NPar ){
+        Double_t xpar = x[iParam] ;
+        Double_t zpar = x[iParam+1] ;
+        Double_t Epar = x[iParam+2] ;
+        Double_t dr = TMath::Sqrt( (xDigit - xpar) * (xDigit - xpar) + (zDigit - zpar) * (zDigit - zpar) );
+        Double_t shape = sum * AliPHOSTrackSegmentMakerv1::ShowerShape(dr) ;
+        Double_t r4 = dr*dr*dr*dr ;
+        Double_t r295 = TMath::Power(dr,2.95) ;
+        Double_t deriv =-4. * dr*dr * ( 2.32 / ( (2.32 + 0.26 * r4) * (2.32 + 0.26 * r4) ) +
+                                        0.0316 * (1. + 0.0171 * r295) / ( ( 1. + 0.0652 * r295) * (1. + 0.0652 * r295) ) ) ;
+        
+        Grad[iParam] += Epar * shape * deriv * (xpar - xDigit) ;  // Derivative over x    
+        iParam++ ; 
+        Grad[iParam] += Epar * shape * deriv * (zpar - zDigit) ;  // Derivative over z         
+        iParam++ ; 
+        Grad[iParam] += shape ;                                  // Derivative over energy             
+        iParam++ ; 
+       }
+     }
+     Efit = 0;
+     iparam = 0 ;
+     while(iparam < NPar ){
+       Double_t xpar = x[iparam] ;
+       Double_t zpar = x[iparam+1] ;
+       Double_t Epar = x[iparam+2] ;
+       iparam += 3 ;
+       Double_t Distance = (xDigit - xpar) * (xDigit - xpar) + (zDigit - zpar) * (zDigit - zpar)  ;
+       Distance =  TMath::Sqrt(Distance) ;
+       Efit += Epar * AliPHOSTrackSegmentMakerv1::ShowerShape(Distance) ;
+     }
+     fret += (Efit-emcEnergies[iDigit])*(Efit-emcEnergies[iDigit])/emcEnergies[iDigit] ; 
+     // Here we assume, that sigma = sqrt(E)
+     iDigit++ ;
   }
 }
index 8826c35..f963d7c 100644 (file)
 #include "AliPHOSEmcRecPoint.h"
 #include "AliPHOSPpsdRecPoint.h"
 #include "AliPHOSTrackSegmentMaker.h"
-
+#include "TMinuit.h" 
 
 class  AliPHOSTrackSegmentMakerv1 : public AliPHOSTrackSegmentMaker {
 
 public:
 
   AliPHOSTrackSegmentMakerv1() ;                     
-  virtual ~ AliPHOSTrackSegmentMakerv1(){}  // dtor
+  virtual ~ AliPHOSTrackSegmentMakerv1() ; // dtor
   
   Bool_t  FindFit(AliPHOSEmcRecPoint * emcRP, int * MaxAt, Float_t * maxAtEnergy, 
                  Int_t NPar, Float_t * FitParametres) ; //Used in UnfoldClusters, calls TMinuit
@@ -51,18 +51,16 @@ public:
 
   void    SetMaxEmcPpsdDistance(Float_t r){ fR0 = r ;} //Radius within which we look for ppsd cluster
 
- Double_t ShowerShape(Double_t r) ; //Shape of shower used in unfolding
+  static Double_t ShowerShape(Double_t r) ; // Shape of shower used in unfolding; class member function (not object member function)
 
   void    UnfoldClusters(DigitsList * DL, RecPointsList * emcIn, AliPHOSEmcRecPoint * iniEmc, Int_t Nmax, 
-                        int * maxAt, Float_t * maxAtEnergy, TObjArray * emclist) ; //Unfolds overlaping clusters using TMinuit packadge
-
-  void static UnfoldingChiSquare(Int_t &NPar, Double_t *Grad, Double_t & fret, Double_t *x, Int_t iflag); //used in TMinuit
-
+                        int * maxAt, Float_t * maxAtEnergy, TObjArray * emclist) ; //Unfolds overlaping clusters using TMinuit package
 
 private:
 
-  Float_t fDelta ;  // parameter used for sorting
-  Float_t fR0  ;    // Maximal distance between EMC and PPSD clusters of one Track Segment in module plane
+  Float_t fDelta ;    // parameter used for sorting
+  Float_t fR0 ;       // Maximal distance between EMC and PPSD clusters of one Track Segment in module plane
+  TMinuit * fMinuit ; // Minuit object needed by cluster unfolding
 
 public: 
 
index f77a423..da103c3 100644 (file)
 
 // --- Standard library ---
 
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <strstream.h>
-#include <assert.h>
+#include <cstdio>
+#include <cstring>
+#include <cstdlib>
+#include <strstream>
+#include <cassert>
 
 // --- AliRoot header files ---
 
@@ -67,10 +67,6 @@ AliPHOSv0::AliPHOSv0(const char *name, const char *title):
   fDigits = new TClonesArray("AliPHOSDigit",100) ;
   fTmpHits= new TClonesArray("AliPHOSHit",100) ;
 
-  assert ( fHits != 0 ) ;
-  assert ( fDigits != 0 ) ;
-  assert ( fTmpHits != 0 ) ;
-
   fNTmpHits = fNhits = 0 ;
 
   fIshunt     =  1 ; // All hits are associated with primary particles
@@ -84,7 +80,7 @@ AliPHOSv0::AliPHOSv0(const char *name, const char *title):
    cout << "AliPHOSv0 : PHOS geometry initialization failed !" << endl ;   
 }
 //____________________________________________________________________________
-AliPHOSv0::AliPHOSv0(AliPHOSReconstructioner&  Reconstructioner, const char *name, const char *title):
+AliPHOSv0::AliPHOSv0(AliPHOSReconstructioner & Reconstructioner, const char *name, const char *title):
   AliPHOS(name,title)
 {
   
@@ -101,10 +97,6 @@ AliPHOSv0::AliPHOSv0(AliPHOSReconstructioner&  Reconstructioner, const char *nam
   fDigits = new TClonesArray("AliPHOSDigit",100) ;
   fTmpHits= new TClonesArray("AliPHOSHit",100) ;
 
-  assert ( fHits != 0 ) ;
-  assert ( fDigits != 0 ) ;
-  assert ( fTmpHits != 0 ) ;
-
   fNTmpHits = fNhits = 0 ;
 
   fIshunt     =  1 ; // All hits are associated with primary particles
@@ -119,15 +111,27 @@ AliPHOSv0::AliPHOSv0(AliPHOSReconstructioner&  Reconstructioner, const char *nam
 
   // Defining the PHOS Reconstructioner
  
- fReconstructioner = &Reconstructioner;
+ fReconstructioner = &Reconstructioner ;
 }
 
 //____________________________________________________________________________
 AliPHOSv0::~AliPHOSv0()
 {
-  delete fHits ;
+  fTmpHits->Delete() ; 
   delete fTmpHits ;
-  delete fDigits ;
+  fTmpHits = 0 ; 
+
+  fEmcClusters->Delete() ; 
+  delete fEmcClusters ; 
+  fEmcClusters = 0 ; 
+
+  fPpsdClusters->Delete() ;
+  delete fPpsdClusters ;
+  fPpsdClusters = 0 ; 
+
+  fTrackSegments->Delete() ; 
+  delete fTrackSegments ;
+  fTrackSegments = 0 ; 
 }
 
 //____________________________________________________________________________
@@ -1022,7 +1026,7 @@ void AliPHOSv0::CreateGeometryforPPSD()
 
 //___________________________________________________________________________
 Int_t AliPHOSv0::Digitize(Float_t Energy){
-  Float_t fB = 10000000. ;
+  Float_t fB = 100000000. ;
   Float_t fA = 0. ;
   Int_t chan = Int_t(fA + Energy*fB ) ;
   return chan ;
@@ -1039,7 +1043,6 @@ void AliPHOSv0::FinishEvent()
 
   for ( i = 0 ; i < fNTmpHits ; i++ ) {
     Hit = (AliPHOSHit*)fTmpHits->At(i) ;
-    assert (Hit!=0) ;
     Digit = new AliPHOSDigit(Hit->GetId(),Digitize(Hit->GetEnergy())) ;
     new(lDigits[fNdigits]) AliPHOSDigit(* Digit) ;
     fNdigits++;  delete Digit ;    
@@ -1087,28 +1090,43 @@ void AliPHOSv0::MakeBranch(Option_t* opt)
     printf("* AliPHOS::MakeBranch * Making Branch %s for digits\n",branchname);
   }
 }
-//_____________________________________________________________________________
 
-void AliPHOSv0::Reconstruction(AliPHOSReconstructioner& Reconstructioner)
+//_____________________________________________________________________________
+void AliPHOSv0::Reconstruction(AliPHOSReconstructioner & Reconstructioner)
 { 
-  fReconstructioner = &Reconstructioner;
-  if (fEmcClusters) 
-    { fEmcClusters->Delete();}
-  else
-    { fEmcClusters= new TClonesArray("AliPHOSEmcRecPoint", 100); } ;
+  // reinitializes the existing RecPoint Lists and steers the reconstruction processes
 
-  if (fPpsdClusters)
-    { fPpsdClusters->Delete(); }
-  else
-    { fPpsdClusters = new TClonesArray("AliPHOSPpsdRecPoint", 100) ;}
+  fReconstructioner = &Reconstructioner ;
+  cout << "Hola1" << endl;
+  if (fEmcClusters) { 
+    fEmcClusters->Delete() ; 
+    delete fEmcClusters ;
+    fEmcClusters = 0 ; 
 
-  if (fTrackSegments)
-    { fTrackSegments->Delete(); }
-  else
-    { fTrackSegments = new TObjArray(100) ;}
-  
+  }
+  fEmcClusters= new RecPointsList("AliPHOSEmcRecPoint", 100) ;
+  cout << "Hola2" << endl;
+  if (fPpsdClusters) { 
+    fPpsdClusters->Delete() ; 
+    delete fPpsdClusters ; 
+    fPpsdClusters = 0 ; 
+  }
+  fPpsdClusters = new RecPointsList("AliPHOSPpsdRecPoint", 100) ;
+
+
+  cout << "Hola3" << endl;
+  if (fTrackSegments) { 
+   fTrackSegments->Print(""); 
+   fTrackSegments->Delete() ; 
+    delete fTrackSegments ; 
+    fTrackSegments = 0 ; 
+  }
+  fTrackSegments = new TObjArray(100) ;
+
+  cout << "Hola4" << endl;
   fReconstructioner->Make(fDigits, fEmcClusters, fPpsdClusters, fTrackSegments);
-  
+  cout << "Hola5" << endl;
 }
 
 //____________________________________________________________________________
index 74c0c4f..e244c44 100644 (file)
@@ -1,38 +1,9 @@
-#ifndef ALIPHOSXXX_H
-#define ALIPHOSXXX_H
+#ifndef ALIPHOSV0_H
+#define ALIPHOSV0_H
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
 ////////////////////////////////////////////////
-//  Short description                         //
-//  Author                 SUBATECH           //
-//      comment                               //  
-//                                            //
-////////////////////////////////////////////////
-
-// --- ROOT system ---
-
-// --- Standard library ---
-
-// --- AliRoot header files ---
-
-class AliPHOSxxx {
-
-public:
-
-  virtual ~AliPHOSxxx() ; // dtor
-
-private:
-
-ClassDef(AliPHOSxxx,1)  // description , version 1
-
-};
-
-#endif // AliPHOSXXX_H
-//-*-C++-*-
-#ifndef ALIPHOSV4_H
-#define ALIPHOSV4_H
-////////////////////////////////////////////////
 //  Manager class  for PHOS                   //
 //  Version SUBATECH                          //
 //  Author  Y. Schutz SUBATECH                //
@@ -55,8 +26,8 @@ public:
 
   AliPHOSv0(void) ;
   AliPHOSv0(const char *name, const char *title="") ;
-  AliPHOSv0(AliPHOSReconstructioner&  Reconstructioner, const char *name, const char *title="") ;
-  virtual       ~AliPHOSv0(void) ;
+  AliPHOSv0(AliPHOSReconstructioner& Reconstructioner, const char *name, const char *title="") ;
+  virtual ~AliPHOSv0(void) ;
 
   virtual void   AddHit( Int_t track, Int_t id, Float_t *hits ) ;   // adds a pre-digitilized hit to the hit tree 
   virtual void   BuildGeometry(void) ;                              // creates the geometry for the ROOT display
@@ -66,35 +37,34 @@ public:
   void           CreateGeometryforPHOS(void) ;                      // creates the PHOS geometry for GEANT
   void           CreateGeometryforPPSD(void) ;                      // creates the PPSD geometry for GEANT
   Int_t          Digitize(Float_t Energy);
-  RecPointsList* EmcClusters() {return fEmcClusters;}                 // gets TClonesArray of cluster in the crystals 
+  RecPointsList* EmcClusters() {return fEmcClusters;}               // gets TClonesArray of cluster in the crystals 
   void           FinishEvent(void) ;                                // makes the digits from the hits 
+  virtual AliPHOSGeometry * GetGeometry() { return fGeom ; }  
   virtual void   Init(void) ;                                       // does nothing
+  Int_t IsVersion(void) const { return 0 ; }
   void           MakeBranch(Option_t* opt) ;
   RecPointsList* PpsdClusters() {return fPpsdClusters;}             // gets TClonesArray of clusters in the PPSD 
   void           Reconstruction(AliPHOSReconstructioner& Reconstructioner) ;
   void           ResetClusters(){} ;
-  void           SetReconstructioner(AliPHOSReconstructioner& Reconstructioner) {fReconstructioner = &Reconstructioner;} //
+  void           SetReconstructioner(AliPHOSReconstructioner& Reconstructioner) {fReconstructioner = &Reconstructioner ;} 
   virtual void   StepManager(void) ;                                // does the tracking through PHOS and a preliminary digitalization
-  TObjArray *   TrackSegments(){return fTrackSegments ;}
-  // inlines
-
-  virtual AliPHOSGeometry * GetGeometry() { return fGeom ; }  
-  Int_t IsVersion(void) const { return 4 ; }
-
+  TObjArray *    TrackSegments(){return fTrackSegments ;}
+  
 private:
 
-  AliPHOSGeometry  *        fGeom ; // geometry definition
-  RecPointsList    *        fEmcClusters;    //!
-  Int_t                     fNTmpHits ;     //!  used internally for digitalization (!=do not stream)
-  RecPointsList    *        fPpsdClusters;  //!
-  TObjArray *               fTrackSegments ;//!
-  TClonesArray *            fTmpHits ;      //!  idem
+  RecPointsList * fEmcClusters ;        //!  (!=do not stream)
+  AliPHOSGeometry * fGeom ;             // geometry definition
+  Int_t fNTmpHits ;                     //!  used internally for digitalization
+  RecPointsList * fPpsdClusters ;       //!
   AliPHOSReconstructioner * fReconstructioner ; // Reconstrutioner of the PHOS event: Clusterization and subtracking procedures
-  AliPHOSTrackSegmentMaker       * fTrackSegmentMaker ;
+  TClonesArray * fTmpHits ;             //!  idem
+  AliPHOSTrackSegmentMaker * fTrackSegmentMaker ;
+  TObjArray * fTrackSegments ;          //!
+
 public:
 
   ClassDef(AliPHOSv0,1)  // PHOS main class , version subatech
 
 };
 
-#endif // AliPHOSV4_H
+#endif // AliPHOSV0_H
diff --git a/PHOS/AliPHOSv1.cxx b/PHOS/AliPHOSv1.cxx
deleted file mode 100644 (file)
index 3ae43f6..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/*
-$Log$
-*/
-
-/////////////////////////////////////////////////////////
-//  Manager and hits classes for set:PHOS version 1    //
-/////////////////////////////////////////////////////////
-// --- ROOT system ---
-#include "TH1.h"
-#include "TRandom.h"
-#include "TFile.h"
-#include "TTree.h"
-#include "TMath.h"
-
-// --- galice header files ---
-#include "AliPHOSv1.h"
-#include "AliRun.h"
-
-ClassImp(AliPHOSv1)
-
-//______________________________________________________________________________
-
-
-AliPHOSv1::AliPHOSv1()
-{
-}
-//______________________________________________________________________________
-
-AliPHOSv1::AliPHOSv1(const char *name, const char *title)
-          : AliPHOS(name, title)
-{
-}
-//___________________________________________
-void AliPHOSv1::CreateGeometry()
-{
-
-  AliPHOS *PHOS_tmp = (AliPHOS*)gAlice->GetModule("PHOS");
-  if( NULL==PHOS_tmp )
-  {
-    printf("There isn't PHOS detector!\n");
-    return;
-  }
-//  AliPHOS &PHOS = *PHOS_tmp;
-
-  //////////////////////////////////////////////////////////////////////////////
-
-  Int_t                 rotation_matrix_number=0;
-  Float_t               par[11],
-                        x,y,z;
-
-  const float           cell_length             = GetCrystalLength()+GetAirThickness()+GetWrapThickness()+GetPIN_Length(),
-                        cell_side_size          = GetCrystalSideSize()+2*GetAirThickness()+2*GetWrapThickness(),
-                        cradle_thikness         = cell_length;
-
-  //////////////////////////////////////////////////////////////////////////////
-  // CELL volume and subvolumes creation
-  //////////////////////////////////////////////////////////////////////////////
-
-  par[0] = GetCrystalSideSize()/2 + GetWrapThickness();
-  par[1] = GetCrystalSideSize()/2 + GetWrapThickness();
-  par[2] = GetCrystalLength()  /2 + GetWrapThickness()/2;
-  gMC->Gsvolu("WRAP","BOX ",GetPHOS_IDTMED_Tyvek(),par,3);
-
-  par[0] = GetCrystalSideSize()/2;
-  par[1] = GetCrystalSideSize()/2;
-  par[2] = GetCrystalLength()/2;
-  gMC->Gsvolu("CRST","BOX ",GetPHOS_IDTMED_PbWO4(),par,3);
-
-  // PIN
-  par[0] = GetPIN_SideSize()/2;
-  par[1] = GetPIN_SideSize()/2;
-  par[2] = GetPIN_Length()/2;
-  gMC->Gsvolu("PIN ","BOX ",GetPHOS_IDTMED_PIN(),par,3);
-
-  //////////////////////////////////////////////////////////////////////////////
-  // CRADLE creation.
-  //////////////////////////////////////////////////////////////////////////////
-
-  par[0] = cell_side_size/2 * GetNz();
-  par[1] = cell_side_size/2 * GetNphi();
-  par[2] = cradle_thikness/2;
-  gMC->Gsvolu("PHOS","BOX ",GetPHOS_IDTMED_AIR(),par,3);
-
-
-  par[0] = cell_side_size/2 * GetNz();
-  par[1] = cell_side_size/2 * GetNphi();
-  par[2] = cell_length/2;
-  gMC->Gsvolu("CRS0","BOX ",GetPHOS_IDTMED_AIR(),par,3);
-
-  x = 0;
-  y = 0;
-  z = -(cradle_thikness-cell_length)/2;
-  gMC->Gspos("CRS0",1,"PHOS",x,y,z,0,"ONLY");
-
-  gMC->Gsdvn("CRS1","CRS0",GetNphi(),2);
-  gMC->Gsdvn("CELL","CRS1",GetNz()  ,1);
-
-  //////////////////////////////////////////////////////////////////////////////
-  // CELL creation
-  //////////////////////////////////////////////////////////////////////////////
-
-  x = 0;
-  y = 0;
-  z = -GetWrapThickness()/2;
-  gMC->Gspos("CRST",1,"WRAP",x,y,z,0,"ONLY");
-
-  x = 0;
-  y = 0;
-  z = GetPIN_Length()/2;
-  gMC->Gspos("WRAP",1,"CELL",x,y,z,0,"ONLY");
-
-  x = 0;
-  y = 0;
-  z = -GetCrystalLength()/2-GetWrapThickness()/2;
-  gMC->Gspos("PIN ",1,"CELL",x,y,z,0,"ONLY");
-
-  //////////////////////////////////////////////////////////////////////////////
-  // CELL has been created.
-  //////////////////////////////////////////////////////////////////////////////
-
-
-  //////////////////////////////////////////////////////////////////////////////
-  // End of CRADLE creation.
-  //////////////////////////////////////////////////////////////////////////////
-
-
-  //////////////////////////////////////////////////////////////////////////////
-  // PHOS creation
-  //////////////////////////////////////////////////////////////////////////////
-
-  for( int i=0; i<GetCradlesAmount(); i++ )
-  {
-    Float_t cradle_angle     = 27.,
-            cradle_angle_pos = -90+(i-(GetCradlesAmount()-1)/2.) *
-                               (cradle_angle+GetAngleBetweenCradles());
-    // Cradles are numerated in clock reversed order. (general way of angle increment)
-
-    Float_t r = GetRadius() + cradle_thikness/2;
-    x = r*cos(cradle_angle_pos*kPI/180);
-    y = r*sin(cradle_angle_pos*kPI/180);
-    z = 0;
-    AliMatrix(rotation_matrix_number, 0,0 , 90,90+cradle_angle_pos , 90,180+cradle_angle_pos);
-    gMC->Gspos("PHOS",i+1,"ALIC",x,y,z,rotation_matrix_number,"ONLY");
-
-    GetCradleAngle(i) = cradle_angle_pos;
-  }
-  AddPHOSCradles();
-
-  //////////////////////////////////////////////////////////////////////////////
-  // All is done.
-  // Print some information.
-  //////////////////////////////////////////////////////////////////////////////
-}
-
-void AliPHOSv1::StepManager()
-{
-  static Bool_t inwold=0;   // Status of previous ctrak->inwvol
-  Int_t copy;
-
-  int cradle_number, cell_Z, cell_Phi;  // Variables that describe cell position.
-
-  if( gMC->GetMedium() == GetPHOS_IDTMED_PIN() && (gMC->IsTrackInside() || gMC->IsTrackExiting()==2) && inwold && gMC->TrackCharge()!=0 )
-  {
-    // GEANT particle just have entered into PIN diode.
-
-    AliPHOS &PHOS = *(AliPHOS*)gAlice->GetModule("PHOS");
-
-    gMC->CurrentVolOffID(4,copy);
-    cradle_number  = copy-1;
-    gMC->CurrentVolOffID(1,copy);
-    cell_Z         = copy-1;
-    gMC->CurrentVolOffID(2,copy);
-    cell_Phi       = copy-1;
-/*
-        cradle_number  = cvolu->number[cvolu->nlevel-5]-1;
-        cell_Z         = cvolu->number[cvolu->nlevel-2]-1;
-        cell_Phi       = cvolu->number[cvolu->nlevel-3]-1;
-*/
-
-    TH2S &h = PHOS.GetCradle(cradle_number).fChargedTracksInPIN;
-    h.AddBinContent(h.GetBin(cell_Z,cell_Phi));
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-
-  if( gMC->GetMedium() == GetPHOS_IDTMED_PbWO4() )
-  {
-    // GEANT particle into crystal.
-
-    AliPHOS &PHOS = *(AliPHOS*)gAlice->GetModule("PHOS");
-
-    gMC->CurrentVolOffID(5,copy);
-    cradle_number  = copy-1;
-    gMC->CurrentVolOffID(2,copy);
-    cell_Z         = copy-1;
-    gMC->CurrentVolOffID(3,copy);
-    cell_Phi       = copy-1;
-/*
-        cradle_number  = cvolu->number[cvolu->nlevel-6]-1;
-        cell_Z         = cvolu->number[cvolu->nlevel-3]-1;
-        cell_Phi       = cvolu->number[cvolu->nlevel-4]-1;
-*/
-    TH2F &h = PHOS.GetCradle(cradle_number).fCellEnergy;
-    h.AddBinContent(h.GetBin(cell_Z,cell_Phi),gMC->Edep());
-  }
-
-  //////////////////////////////////////////////////////////////////////////////
-
-
-  inwold=gMC->IsTrackEntering();         // Save current status of GEANT variable.
-}
-
diff --git a/PHOS/AliPHOSv1.h b/PHOS/AliPHOSv1.h
deleted file mode 100644 (file)
index f4a4d35..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef PHOSv1_H
-#define PHOSv1_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-
-////////////////////////////////////////////////////////
-//  Manager and hits classes for set:PHOS version 1   //
-////////////////////////////////////////////////////////
-
-// --- galice header files ---
-#include "AliPHOS.h"
-class AliPHOSv1 : public AliPHOS {
-
- public:
-                        AliPHOSv1();
-                        AliPHOSv1(const char *name, const char *title);
-  virtual              ~AliPHOSv1(){}
-  virtual void          CreateGeometry();
-  virtual Int_t         IsVersion() const {return 1;}
-  virtual void          StepManager();
-
- ClassDef(AliPHOSv1,1)  //Hits manager for set:PHOS version 1
-};
-#endif
-
diff --git a/PHOS/AliPHOSv2.cxx b/PHOS/AliPHOSv2.cxx
deleted file mode 100644 (file)
index ecd1a60..0000000
+++ /dev/null
@@ -1,732 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/*
-$Log$
-Revision 1.9  1999/11/08 07:12:31  fca
-Minor corrections thanks to I.Hrivnacova
-
-Revision 1.8  1999/09/29 09:24:25  fca
-Introduction of the Copyright and cvs Log
-
-*/
-
-//-*-C++-*-
-//_________________________________________________________________________
-// Manager and hit classes for PHOS
-//*-- Author : Maxim Volkov, RRC KI
-// AliPHOSv2 derives directly from AliDetector, because too much functionality
-// has been put in AliPHOS for my liking.
-//////////////////////////////////////////////////////////////////////////////
-
-// --- ROOT system ---
-#include "TH1.h"
-#include "TRandom.h"
-#include "TFile.h"
-#include "TTree.h"
-#include "TBRIK.h"
-#include "TNode.h"
-
-// --- Standard library ---
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-// --- galice header files ---
-#include "AliPHOSv2.h"
-#include "AliRun.h"
-#include "AliConst.h"
-
-///////////////////////////////////////////////////////////////////////////////
-
-ClassImp(AliPHOSv2)
-
-///////////////////////////////////////////////////////////////////////////////
-  
-AliPHOSv2::~AliPHOSv2(void)
-{
-
-  //  fNV       = 0;
-  //  fNH       = 0;
-  fIshunt   = 0;
-  
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-AliPHOSv2::AliPHOSv2()
-{
-
-  //  fNV       = 0;
-  //  fNH       = 0;
-  fIshunt   = 0;
-  fHits     = 0;
-  fDigits   = 0;
-
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-AliPHOSv2::AliPHOSv2(const char *name, const char *title):
-  AliPHOS(name,title)
-{
-  
-  //Begin_Html
-  /*
-    <img src="picts/aliphos.gif">
-  */
-  //End_Html
-  
-  fHits   = new TClonesArray("AliPHOShitv2",  405);
-  
-  //  fNV         =  4;
-  //  fNH         =  4;
-  fIshunt     =  1; // All hits are associated with primary particles
-
-  DefPars(); // Set geometry parameters
-  
-  //  SetMarkerColor(kGreen);
-  //  SetMarkerStyle(2);
-  //  SetMarkerSize(0.4);
-  
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void AliPHOSv2::DefPars(void)
-{
-
-  // Initialization of GEANT3 geometry parameters
-  fXtlSize[0]=2.2;
-  fXtlSize[1]=18.0;
-  fXtlSize[2]=2.2;
-
-  fWrapThickness=0.01;
-
-  fPINSize[0]=1.0;
-  fPINSize[1]=0.1;
-  fPINSize[2]=1.0;
-
-  fCPVThickness=1.0;
-
-  fPHOSFoam[0]=214.6;
-  fPHOSFoam[1]=80.0;
-  fPHOSFoam[2]=260.0;
-
-  fPHOStxwall[0]=209.0;
-  fPHOStxwall[1]=71.0;
-  fPHOStxwall[2]=250.0;
-
-  fPHOSAir[0]=206.0;
-  fPHOSAir[1]=66.0;
-  fPHOSAir[2]=244.0;
-
-  fRadius[0]=447.0;
-  fRadius[1]=460.0;
-
-  fPHOSextra[0]=0.005; // Titanium cover thickness
-  fPHOSextra[1]=6.95; // Crystal support height
-  fPHOSextra[2]=4.0; // Thermo Insulating outer cover Upper plate thickness
-  fPHOSextra[3]=5.0; // Upper Polystyrene Foam plate thickness
-  fPHOSextra[4]=2.0; // Thermo insulating Crystal Block wall thickness
-  fPHOSextra[5]=0.06; // Upper Cooling Plate thickness
-  fPHOSextra[6]=10.0; // Al Support Plate thickness
-  fPHOSextra[7]=3.0; // Lower Thermo Insulating Plate thickness
-  fPHOSextra[8]=1.0; // Lower Textolit Plate thickness
-  fPHOSextra[9]=0.03; // 1/2 total gap between adjacent crystals
-
-  fNphi=88;
-  fNz=104;
-
-  fNModules=4;
-
-  fPHOSAngle[0]=0.0; // Module position angles are set in CreateGeometry()
-  fPHOSAngle[1]=0.0;
-  fPHOSAngle[2]=0.0;
-  fPHOSAngle[3]=0.0;
-
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void AliPHOSv2::Init(void)
-{
-
-  Int_t i;
-
-  printf("\n");
-  for(i=0;i<35;i++) printf("*");
-  printf(" PHOS_INIT ");
-  for(i=0;i<35;i++) printf("*");
-  printf("\n");
-
-  // Here the PHOS initialisation code (if any!)
-  for(i=0;i<80;i++) printf("*");
-  printf("\n");
-
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void AliPHOSv2::BuildGeometry()
-{
-
-  // Stolen completely from A. Zvyagine
-
-  TNode *Node, *Top;
-
-  const int kColorPHOS = kRed;
-
-  Top=gAlice->GetGeometry()->GetNode("alice");
-
-  // PHOS
-  Float_t pphi=12.9399462;
-  new TRotMatrix("rot988","rot988",90,-3*pphi,90,90-3*pphi,0,0);
-  new TRotMatrix("rot989","rot989",90,-  pphi,90,90-  pphi,0,0);
-  new TRotMatrix("rot990","rot990",90,   pphi,90,90+  pphi,0,0);
-  new TRotMatrix("rot991","rot991",90, 3*pphi,90,90+3*pphi,0,0);
-  new TBRIK("S_PHOS","PHOS box","void",107.3,40,130);
-  Top->cd();
-  Node=new TNode("PHOS1","PHOS1","S_PHOS",-317.824921,-395.014343,0,"rot988");
-  Node->SetLineColor(kColorPHOS);
-  fNodes->Add(Node);
-  Top->cd();
-  Node=new TNode("PHOS2","PHOS2","S_PHOS",-113.532333,-494.124908,0,"rot989");
-  fNodes->Add(Node);
-  Node->SetLineColor(kColorPHOS);
-  Top->cd();
-  Node=new TNode("PHOS3","PHOS3","S_PHOS", 113.532333,-494.124908,0,"rot990");
-  Node->SetLineColor(kColorPHOS);
-  fNodes->Add(Node);
-  Top->cd();
-  Node=new TNode("PHOS4","PHOS4","S_PHOS", 317.824921,-395.014343,0,"rot991");
-  Node->SetLineColor(kColorPHOS);
-  fNodes->Add(Node);
-
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void AliPHOSv2::CreateMaterials()
-{
-
-  // DEFINITION OF AVAILABLE PHOS MATERIALS
-  
-  Int_t   ISXFLD=gAlice->Field()->Integ();
-  Float_t SXMGMX=gAlice->Field()->Max();
-
-  // --- The PbWO4 crystals ---
-  Float_t AX[3]={207.19, 183.85, 16.0};
-  Float_t ZX[3]={82.0, 74.0, 8.0};
-  Float_t WX[3]={1.0, 1.0, 4.0};
-  Float_t DX=8.28;
-
-  // --- Titanium ---
-  Float_t ATIT[3]={47.88, 26.98, 54.94};
-  Float_t ZTIT[3]={22.0, 13.0, 25.0};
-  Float_t WTIT[3]={69.0, 6.0, 1.0};
-  Float_t DTIT=4.5;
-
-  // --- The polysterene scintillator (CH) ---
-  Float_t AP[2]={12.011, 1.00794};
-  Float_t ZP[2]={6.0, 1.0};
-  Float_t WP[2]={1.0, 1.0};
-  Float_t DP=1.032;
-
-  // --- Tyvek (CnH2n) ---
-  Float_t AT[2]={12.011, 1.00794};
-  Float_t ZT[2]={6.0, 1.0};
-  Float_t WT[2]={1.0, 2.0};
-  Float_t DT=0.331;
-
-  // --- Polystyrene foam ---
-  Float_t AF[2]={12.011, 1.00794};
-  Float_t ZF[2]={6.0, 1.0};
-  Float_t WF[2]={1.0, 1.0};
-  Float_t DF=0.12;
-
-  // --- Foam thermo insulation ---
-  Float_t ATI[2]={12.011, 1.00794};
-  Float_t ZTI[2]={6.0, 1.0};
-  Float_t WTI[2]={1.0, 1.0};
-  Float_t DTI=0.1;
-
-  // --- Textolit ---
-  Float_t ATX[4]={16.0, 28.09, 12.011, 1.00794};
-  Float_t ZTX[4]={8.0, 14.0, 6.0, 1.0};
-  Float_t WTX[4]={292.0, 68.0, 462.0, 736.0};
-  Float_t DTX=1.75;
-
-  Int_t *idtmed = fIdtmed->GetArray()-699;
-
-  AliMixture(0, "PbWO4$", AX, ZX, DX, -3, WX);
-  AliMixture(1, "Polystyrene$", AP, ZP, DP, -2, WP);
-  AliMaterial(2, "Al$", 26.98, 13., 2.7, 8.9, 999., 0, 0);
-  // ---                     Absorption length^ is ignored ---
-  AliMixture(3, "Tyvek$", AT, ZT, DT, -2, WT);
-  AliMixture(4, "Foam$", AF, ZF, DF, -2, WF);
-  AliMixture(5, "Titanium$", ATIT, ZTIT, DTIT, -3, WTIT);
-  AliMaterial(6, "Si$", 28.09, 14., 2.33, 9.36, 42.3, 0, 0);
-  AliMixture(7, "Thermo Insul.$", ATI, ZTI, DTI, -2, WTI);
-  AliMixture(8, "Textolit$", ATX, ZTX, DTX, -4, WTX);
-  AliMaterial(99, "Air$", 14.61, 7.3, 0.001205, 30420., 67500., 0, 0);
-  
-  AliMedium(0, "PHOS Xtal    $", 0, 1,
-           ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.1, 0.1, 0, 0);
-  AliMedium(1, "CPV scint.   $", 1, 1,
-           ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.1, 0.1, 0, 0);
-  AliMedium(2, "Al parts     $", 2, 0,
-           ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.001, 0.001, 0, 0);
-  AliMedium(3, "Tyvek wrapper$", 3, 0,
-           ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.001, 0.001, 0, 0);
-  AliMedium(4, "Polyst. foam $", 4, 0,
-           ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.1, 0.1, 0, 0);
-  AliMedium(5, "Titan. cover $", 5, 0,
-           ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.0001, 0.0001, 0, 0);
-  AliMedium(6, "Si PIN       $", 6, 0,
-           ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.01, 0.01, 0, 0);
-  AliMedium(7, "Thermo Insul.$", 7, 0,
-           ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.1, 0.1, 0, 0);
-  AliMedium(8, "Textolit     $", 8, 0,
-           ISXFLD, SXMGMX, 10.0, 0.1, 0.1, 0.1, 0.1, 0, 0);
-  AliMedium(99, "Air          $", 99, 0,
-           ISXFLD, SXMGMX, 10.0, 1.0, 0.1, 0.1, 10.0, 0, 0);
-
-  // --- Set decent energy thresholds for gamma and electron tracking
-  gMC->Gstpar(idtmed[699],"CUTGAM",0.5E-4);
-  gMC->Gstpar(idtmed[699],"CUTELE",1.0E-4);
-  // --- Generate explicitly delta rays in the titan cover ---
-  gMC->Gstpar(idtmed[704],"LOSS",3.);
-  gMC->Gstpar(idtmed[704],"DRAY",1.);
-  // --- and in aluminium parts ---
-  gMC->Gstpar(idtmed[701],"LOSS",3.);
-  gMC->Gstpar(idtmed[701],"DRAY",1.);
-
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void AliPHOSv2::CreateGeometry()
-{
-
-  AliPHOSv2 *PHOS_tmp = (AliPHOSv2*)gAlice->GetModule("PHOS");
-  if(PHOS_tmp==NULL){
-    
-    fprintf(stderr,"PHOS detector not found!\n");
-    return;
-    
-  }
-
-  // --- Dimensions of volumes ---
-  Float_t DPHOS[3], DPTXW[3], DPAIR[3];
-  Float_t DPUFP[3], DPUCP[3], DPASP[3], DPTIP[3], DPTXP[3];
-  Float_t DPTCB[3], DPCBL[3], DPSTC[3], DPPAP[3], DPXTL[3], DPSUP[3],
-    DPPIN[3];
-  Float_t DPCPV[3], DPCPA[3];
-
-  Float_t R, YO, XP1, YP1, PPHI, angle;
-  Int_t IDROTM[99];
-  Int_t i;
-  
-  Double_t const RADDEG=180.0/kPI;
-  //  Double_t const DEGRAD=kPI/180.0;
-
-  // --- Dimensions of PbWO4 crystal ---
-  //      PARAMETER(XTL_X=2.2,XTL_Y=18.,XTL_Z=2.2)
-  Float_t XTL_X=GetCrystalSize(0);
-  Float_t XTL_Y=GetCrystalSize(1);
-  Float_t XTL_Z=GetCrystalSize(2);
-
-  // --- Tyvek wrapper thickness
-  //      PARAMETER(PAP_THICK=0.01)
-  Float_t PAP_THICK=GetWrapThickness();
-
-  // --- Steel (titanium) cover thickness ---
-  //      PARAMETER(STE_THICK=0.005)
-  Float_t STE_THICK=GetPHOSextra(0);
-
-  // --- Crystal support height ---
-  //      PARAMETER(SUP_Y=6.95)
-  Float_t SUP_Y=GetPHOSextra(1);
-
-  // --- PIN-diode dimensions ---
-  //      PARAMETER(PIN_X=1.4,PIN_Y=0.4,PIN_Z=1.4)
-  Float_t PIN_X=GetPINSize(0);
-  Float_t PIN_Y=GetPINSize(1);
-  Float_t PIN_Z=GetPINSize(2);
-
-  // --- CPV thickness ---
-  //      PARAMETER(CPV_Y=0.5)
-  Float_t CPV_Y=GetCPVThickness();
-
-  // --- Foam Thermo Insulating outer cover dimensions ---
-  //      PARAMETER(FTI_X=214.6,FTI_Y=80.,FTI_Z=260.)
-  Float_t FTI_X=GetPHOSFoam(0);
-  Float_t FTI_Y=GetPHOSFoam(1);
-  Float_t FTI_Z=GetPHOSFoam(2);
-
-  // --- Thermo Insulating outer cover Upper plate thickness ---
-  //      PARAMETER(FTIU_THICK=4.)
-  Float_t FTIU_THICK=GetPHOSextra(2);
-
-  // --- Textolit Wall box dimentions ---
-  //      PARAMETER(TXW_X=209.,TXW_Y=71.,TXW_Z=250.)
-  Float_t TXW_X=GetPHOStxwall(0);
-  Float_t TXW_Y=GetPHOStxwall(1);
-  Float_t TXW_Z=GetPHOStxwall(2);
-
-  // --- Inner AIR volume dimensions ---
-  //      PARAMETER(AIR_X=206.,AIR_Y=66.,AIR_Z=244.)
-  Float_t AIR_X=GetPHOSAir(0);
-  Float_t AIR_Y=GetPHOSAir(1);
-  Float_t AIR_Z=GetPHOSAir(2);
-
-  // --- Upper Polystyrene Foam plate thickness ---
-  //      PARAMETER(UFP_Y=5.)
-  Float_t UFP_Y=GetPHOSextra(3);
-
-  // --- Thermo insulating Crystal Block wall thickness ---
-  //      PARAMETER(TCB_THICK=2.)
-  Float_t TCB_THICK=GetPHOSextra(4);
-
-  // --- Upper Cooling Plate thickness ---
-  //      PARAMETER(UCP_Y=0.06)
-  Float_t UCP_Y=GetPHOSextra(5);
-
-  // --- Al Support Plate thickness ---
-  //      PARAMETER(ASP_Y=10.)
-  Float_t ASP_Y=GetPHOSextra(6);
-
-  // --- Lower Thermo Insulating Plate thickness ---
-  //      PARAMETER(TIP_Y=3.)
-  Float_t TIP_Y=GetPHOSextra(7);
-
-  // --- Lower Textolit Plate thickness ---
-  //      PARAMETER(TXP_Y=1.)
-  Float_t TXP_Y=GetPHOSextra(8);
-
-  // --- 1/2 total gap between adjacent crystals
-  Float_t TOTAL_GAP=GetPHOSextra(9);
-
-  // --- Distance from IP to Foam Thermo Insulating top plate ---
-  //      PARAMETER(FTI_R=467.)
-  Float_t FTI_R=GetRadius(0);
-
-  // --- Distance from IP to Crystal Block top Surface (needs to be 460.) ---
-  //      PARAMETER(CBS_R=480.)
-  Float_t CBS_R=GetRadius(1);
-
-  // Get pointer to the array containing media indeces
-  Int_t *IDTMED = fIdtmed->GetArray()-699;
-
-  // --- Define PHOS box volume, fill with thermo insulating foam ---
-  DPHOS[0]=FTI_X/2.0;
-  DPHOS[1]=FTI_Y/2.0;
-  DPHOS[2]=FTI_Z/2.0;
-  gMC->Gsvolu("PHOS", "BOX ", IDTMED[706], DPHOS, 3);
-
-  // --- Define Textolit Wall box, position inside PHOS ---
-  DPTXW[0]=TXW_X/2.0;
-  DPTXW[1]=TXW_Y/2.0;
-  DPTXW[2]=TXW_Z/2.0;
-  gMC->Gsvolu("PTXW", "BOX ", IDTMED[707], DPTXW, 3);
-  YO=(FTI_Y-TXW_Y)/2.0-FTIU_THICK;
-  gMC->Gspos("PTXW", 1, "PHOS", 0.0, YO, 0.0, 0, "ONLY");
-
-  // --- Define Upper Polystyrene Foam Plate, place inside PTXW ---
-  // --- immediately below Foam Thermo Insulation Upper plate ---
-  DPUFP[0]=TXW_X/2.0;
-  DPUFP[1]=UFP_Y/2.0;
-  DPUFP[2]=TXW_Z/2.0;
-  gMC->Gsvolu("PUFP", "BOX ", IDTMED[703], DPUFP, 3);
-  YO=(TXW_Y-UFP_Y)/2.0;
-  gMC->Gspos("PUFP", 1, "PTXW", 0.0, YO, 0.0, 0, "ONLY");
-
-  // --- Define air-filled box, place inside PTXW ---
-  DPAIR[0]=AIR_X/2.0;
-  DPAIR[1]=AIR_Y/2.0;
-  DPAIR[2]=AIR_Z/2.0;
-  gMC->Gsvolu("PAIR", "BOX ", IDTMED[798], DPAIR, 3);
-  YO=(TXW_Y-AIR_Y)/2.0-UFP_Y;
-  gMC->Gspos("PAIR", 1, "PTXW", 0.0, YO, 0.0, 0, "ONLY");
-
-  // --- Define Thermo insulating Crystal Box, position inside PAIR ---
-  DPTCB[0]=GetNphi()*(XTL_X+2*TOTAL_GAP)/2.0+TCB_THICK;
-  DPTCB[1]=(XTL_Y+SUP_Y+PAP_THICK+STE_THICK)/2.0+TCB_THICK/2.0;
-  DPTCB[2]=GetNz()*(XTL_Z+2*TOTAL_GAP)/2.0+TCB_THICK;
-  gMC->Gsvolu("PTCB", "BOX ", IDTMED[706], DPTCB, 3);
-  YO=AIR_Y/2.0-DPTCB[1]-
-    (CBS_R-FTI_R-TCB_THICK-FTIU_THICK-UFP_Y);
-  gMC->Gspos("PTCB", 1, "PAIR", 0.0, YO, 0.0, 0, "ONLY");
-
-  // --- Define Crystal BLock filled with air, position it inside PTCB ---
-  DPCBL[0]=GetNphi()*(XTL_X+2*TOTAL_GAP)/2.0;
-  DPCBL[1]=(XTL_Y+SUP_Y+PAP_THICK+STE_THICK)/2.0;
-  DPCBL[2]=GetNz()*(XTL_Z+2*TOTAL_GAP)/2.0;
-  gMC->Gsvolu("PCBL", "BOX ", IDTMED[798], DPCBL, 3);
-  
-  // --- Divide PCBL in X (phi) and Z directions --
-  gMC->Gsdvn("PROW", "PCBL", GetNphi(), 1);
-  gMC->Gsdvn("PCEL", "PROW", GetNz(), 3);
-  YO=-TCB_THICK/2.0;
-  gMC->Gspos("PCBL", 1, "PTCB", 0.0, YO, 0.0, 0, "ONLY");
-
-  // --- Define STeel (actually, it's titanium) Cover volume, place inside PCEL
-  DPSTC[0]=(XTL_X+2*PAP_THICK)/2.0;
-  DPSTC[1]=(XTL_Y+SUP_Y+PAP_THICK+STE_THICK)/2.0;
-  DPSTC[2]=(XTL_Z+2*PAP_THICK+2*STE_THICK)/2.0;
-  gMC->Gsvolu("PSTC", "BOX ", IDTMED[704], DPSTC, 3);
-  gMC->Gspos("PSTC", 1, "PCEL", 0.0, 0.0, 0.0, 0, "ONLY");
-
-  // --- Define Tyvek volume, place inside PSTC ---
-  DPPAP[0]=XTL_X/2.0+PAP_THICK;
-  DPPAP[1]=(XTL_Y+SUP_Y+PAP_THICK)/2.0;
-  DPPAP[2]=XTL_Z/2.0+PAP_THICK;
-  gMC->Gsvolu("PPAP", "BOX ", IDTMED[702], DPPAP, 3);
-  YO=(XTL_Y+SUP_Y+PAP_THICK)/2.0-(XTL_Y+SUP_Y+PAP_THICK+STE_THICK)/2.0;
-  gMC->Gspos("PPAP", 1, "PSTC", 0.0, YO, 0.0, 0, "ONLY");
-
-  // --- Define PbWO4 crystal volume, place inside PPAP ---
-  DPXTL[0]=XTL_X/2.0;
-  DPXTL[1]=XTL_Y/2.0;
-  DPXTL[2]=XTL_Z/2.0;
-  gMC->Gsvolu("PXTL", "BOX ", IDTMED[699], DPXTL, 3);
-  YO=(XTL_Y+SUP_Y+PAP_THICK)/2.0-XTL_Y/2.0-PAP_THICK;
-  gMC->Gspos("PXTL", 1, "PPAP", 0.0, YO, 0.0, 0, "ONLY");
-
-  // --- Define crystal support volume, place inside PPAP ---
-  DPSUP[0]=XTL_X/2.0+PAP_THICK;
-  DPSUP[1]=SUP_Y/2.0;
-  DPSUP[2]=XTL_Z/2.0+PAP_THICK;
-  gMC->Gsvolu("PSUP", "BOX ", IDTMED[798], DPSUP, 3);
-  YO=SUP_Y/2.0-(XTL_Y+SUP_Y+PAP_THICK)/2.0;
-  gMC->Gspos("PSUP", 1, "PPAP", 0.0, YO, 0.0, 0, "ONLY");
-
-  // --- Define PIN-diode volume and position it inside crystal support ---
-  // --- right behind PbWO4 crystal
-  DPPIN[0]=PIN_X/2.0;
-  DPPIN[1]=PIN_Y/2.0;
-  DPPIN[2]=PIN_Z/2.0;
-  gMC->Gsvolu("PPIN", "BOX ", IDTMED[705], DPPIN, 3);
-  YO=SUP_Y/2.0-PIN_Y/2.0;
-  gMC->Gspos("PPIN", 1, "PSUP", 0.0, YO, 0.0, 0, "ONLY");
-
-  // --- Define Upper Cooling Panel, place it on top of PTCB ---
-  DPUCP[0]=DPTCB[0];
-  DPUCP[1]=UCP_Y/2.0;
-  DPUCP[2]=DPTCB[2];
-  gMC->Gsvolu("PUCP", "BOX ", IDTMED[701], DPUCP,3);
-  YO=(AIR_Y-UCP_Y)/2.0-(CBS_R-FTI_R-TCB_THICK-FTIU_THICK-UFP_Y-UCP_Y);
-  gMC->Gspos("PUCP", 1, "PAIR", 0.0, YO, 0.0, 0, "ONLY");
-
-  // --- Define Al Support Plate, position it inside PAIR ---
-  // --- right beneath PTCB ---
-  DPASP[0]=AIR_X/2.0;
-  DPASP[1]=ASP_Y/2.0;
-  DPASP[2]=AIR_Z/2.0;
-  gMC->Gsvolu("PASP", "BOX ", IDTMED[701], DPASP, 3);
-  YO=(AIR_Y-ASP_Y)/2.0-(CBS_R-FTI_R-FTIU_THICK-UFP_Y+DPCBL[1]*2);
-  gMC->Gspos("PASP", 1, "PAIR", 0.0, YO, 0.0, 0, "ONLY");
-
-  // --- Define Thermo Insulating Plate, position it inside PAIR ---
-  // --- right beneath PASP ---
-  DPTIP[0]=AIR_X/2.0;
-  DPTIP[1]=TIP_Y/2.0;
-  DPTIP[2]=AIR_Z/2.0;
-  gMC->Gsvolu("PTIP", "BOX ", IDTMED[706], DPTIP, 3);
-  YO=(AIR_Y-TIP_Y)/2.0-(CBS_R-FTI_R-FTIU_THICK-UFP_Y+DPCBL[1]*2+ASP_Y);
-  gMC->Gspos("PTIP", 1, "PAIR", 0.0, YO, 0.0, 0, "ONLY");
-
-  // --- Define Textolit Plate, position it inside PAIR ---
-  // --- right beneath PTIP ---
-  DPTXP[0]=AIR_X/2.0;
-  DPTXP[1]=TXP_Y/2.0;
-  DPTXP[2]=AIR_Z/2.0;
-  gMC->Gsvolu("PTXP", "BOX ", IDTMED[707], DPTXP, 3);
-  YO=(AIR_Y-TXP_Y)/2.0-
-    (CBS_R-FTI_R-FTIU_THICK-UFP_Y+DPCBL[1]*2+ASP_Y+TIP_Y);
-  gMC->Gspos("PTXP", 1, "PAIR", 0.0, YO, 0.0, 0, "ONLY");
-
-  // --- Define CPV volume, DON'T PLACE IT YET ---
-  // --- Divide in X and Z direction (same way as PCBL) ---
-  DPCPV[0]=DPCBL[0];
-  DPCPV[1]=CPV_Y/2.0;
-  DPCPV[2]=DPCBL[2];
-  //  gMC->Gsvolu("PCPV", "BOX ", IDTMED[700], DPCPV, 3);
-  gMC->Gsvolu("PCPV", "BOX ", IDTMED[798], DPCPV, 3);
-  gMC->Gsdvn("PCRO", "PCPV", GetNphi(), 1);
-  gMC->Gsdvn("PCCE", "PCRO", GetNz(), 3);
-
-  // Define CPV sensitive pad. It has the same size as PCCE.
-  DPCPA[0]=DPCBL[0]/GetNphi();
-  DPCPA[1]=CPV_Y/2.0;
-  DPCPA[2]=DPCBL[2]/GetNz();
-  gMC->Gsvolu("PCPA", "BOX ", IDTMED[700], DPCPA, 3);
-  gMC->Gspos("PCPA", 1, "PCCE", 0.0, 0.0, 0.0, 0, "ONLY");
-
-  // --- Position various PHOS units in ALICE setup ---
-  // --- PHOS itself first ---
-  PPHI=TMath::ATan(FTI_X/(2.0*FTI_R));
-  PPHI*=RADDEG;
-
-  for(i=1; i<=GetNModules(); i++){
-
-    angle=PPHI*2*(i-GetNModules()/2.0-0.5);
-    AliMatrix(IDROTM[i-1], 90.0, angle, 90.0, 90.0+angle, 0.0, 0.0);
-
-    // --- Position various PHOS units in ALICE setup ---
-    // --- PHOS itself first ---
-    R=FTI_R+FTI_Y/2.0;
-    XP1=R*TMath::Sin(angle/RADDEG);
-    YP1=-R*TMath::Cos(angle/RADDEG);
-    gMC->Gspos("PHOS", i, "ALIC", XP1, YP1, 0.0, IDROTM[i-1], "ONLY");
-
-    // --- Now position PCPV so that its plates are right on top of ---
-    // --- corresponding PHOS modules (previously called cradles) ---
-    R=FTI_R-CPV_Y/2.0;
-    XP1=R*TMath::Sin(angle/RADDEG);
-    YP1=-R*TMath::Cos(angle/RADDEG);
-    gMC->Gspos("PCPV", i, "ALIC", XP1, YP1, 0.0, IDROTM[i-1], "ONLY");
-    GetModuleAngle(i-1)=angle-90.0;
-
-  }
-
-  // --- Set volumes seen without their descendants for drawing ---
-  gMC->Gsatt("PCEL", "SEEN", -2);
-  gMC->Gsatt("PCCE", "SEEN", -2);
-
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void AliPHOSv2::StepManager(void)
-{
-
-  Int_t blrc[4]; // (box, layer, row, column) indices
-  Float_t xyze[4]; // position wrt MRS and energy deposited
-  TLorentzVector pos;
-
-  Int_t *IDTMED=fIdtmed->GetArray()-699;
-
-  if(gMC->GetMedium()==IDTMED[700]){ // We are inside a CPV sensitive pad
-
-    gMC->TrackPosition(pos);
-    xyze[0]=pos[0];
-    xyze[1]=pos[1];
-    xyze[2]=pos[2];
-    xyze[3]=gMC->Edep();
-    
-    gMC->CurrentVolOffID(3, blrc[0]);
-    blrc[1]=1; // CPV corresponds to layer 1
-    gMC->CurrentVolOffID(2, blrc[2]);
-    gMC->CurrentVolOffID(1, blrc[3]);
-    
-    AddHit(gAlice->CurrentTrack(), blrc, xyze);
-
-  }
-
-  if(gMC->GetMedium()==IDTMED[699]){ // We are inside a PWO crystal
-
-    gMC->TrackPosition(pos);
-    xyze[0]=pos[0];
-    xyze[1]=pos[1];
-    xyze[2]=pos[2];
-    xyze[3]=gMC->Edep();
-
-    gMC->CurrentVolOffID(9, blrc[0]);
-    blrc[1]=2; // PWO crystals correspond to layer 2
-    gMC->CurrentVolOffID(4, blrc[2]);
-    gMC->CurrentVolOffID(3, blrc[3]);
-
-    AddHit(gAlice->CurrentTrack(), blrc, xyze);
-
-  }
-}
-
-////////////////////////////////////////////////////////////////////////////
-
-void AliPHOSv2::AddHit(Int_t track, Int_t *vol, Float_t *hits)
-{
-
-  Int_t hitCounter;
-  TClonesArray &lhits = *fHits;
-  AliPHOShitv2 *newHit,*curHit;
-  
-  newHit=new AliPHOShitv2(fIshunt, track, vol, hits);
-  
-  for(hitCounter=0;hitCounter<fNhits;hitCounter++){
-    curHit=(AliPHOShitv2*)lhits[hitCounter];
-    if(*curHit==*newHit){
-      *curHit=*curHit+*newHit;
-      delete newHit;
-      return;
-    }
-  }
-  
-  new(lhits[fNhits++]) AliPHOShitv2(*newHit);
-  delete newHit;
-
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-ClassImp(AliPHOShitv2)
-
-//////////////////////////////////////////////////////////////////////////////
-
-AliPHOShitv2::AliPHOShitv2(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits):
-AliHit(shunt, track)
-{
-
-   Int_t i;
-   for (i=0;i<4;i++)fVolume[i]=vol[i];
-
-   fX       = hits[0];
-   fY       = hits[1];
-   fZ       = hits[2];
-   fELOS    = hits[3];
-
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-Bool_t AliPHOShitv2::operator==(AliPHOShitv2 const &rValue) const
-{
-
-  Int_t volCounter;
-
-  //  if(fDet!=rValue.GetDet()) return kFALSE;
-  if(fTrack!=rValue.GetTrack()) return kFALSE;
-
-  for(volCounter=0;volCounter<4;volCounter++)
-    if(fVolume[volCounter]!=rValue.GetVolume(volCounter))return kFALSE;
-
-  return kTRUE;
-
-}
-
-/////////////////////////////////////////////////////////////////////////////
-
-AliPHOShitv2 const AliPHOShitv2::operator+(AliPHOShitv2 const &rValue) const
-{
-
-  AliPHOShitv2 added(*this);
-
-  added.fELOS+=rValue.GetEnergy();
-  return added;
-
-}
-//////////////////////////////////////////////////////////////////////////////
diff --git a/PHOS/AliPHOSv2.h b/PHOS/AliPHOSv2.h
deleted file mode 100644 (file)
index 083d7e3..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#ifndef ALIPHOS_H
-#define ALIPHOS_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-
-////////////////////////////////////////////////
-//  Manager and hits classes for PHOS     //
-//  Version 2                                 //
-//  Author M. Volkov, RRC KI                  //
-////////////////////////////////////////////////
-
-// --- ROOT system ---
-#include <TArray.h> 
-#include <TRandom.h> 
-
-// --- galice header files ---
-#include "AliPHOS.h"
-#include "AliHit.h"
-
-class AliPHOSv2 : public AliPHOS {
-
-protected:
-  Float_t fXtlSize[3]; // PWO crystal dimensions
-  Float_t fWrapThickness; // Thickness of Tyvek wrapper
-  Float_t fPINSize[3]; // PIN diode dimensions
-  Float_t fCPVThickness; // CPV thickness
-  Float_t fPHOSFoam[3]; // Outer foam cover dimensions
-  Float_t fPHOStxwall[3]; // Textolit box dimensions
-  Float_t fPHOSAir[3]; // Inner air filled volume dimensions
-  Float_t fRadius[2]; // Distances from IP to outer cover and to Xtal surface
-  Float_t fPHOSextra[10]; // Assorted geometrical parameters
-  Int_t   fNphi; // Number of crystal units in X (phi) direction
-  Int_t   fNz; // Number of crystal units in Z direction
-  Float_t fNModules; // Number of modules constituing PHOS
-  Float_t fPHOSAngle[4]; // Position angles of modules
-  
-public:
-  AliPHOSv2(void);
-  AliPHOSv2(const char *name, const char *title="");
-  virtual ~AliPHOSv2(void);
-
-  virtual Int_t IsVersion(void) const {return 2;}
-
-  virtual void DefPars(void);
-
-  virtual void BuildGeometry(void);
-  virtual void CreateGeometry(void);
-  virtual void CreateMaterials(void);
-
-  virtual void Init(void);
-
-  virtual void StepManager(void);
-
-  virtual void AddHit(Int_t track, Int_t *vol, Float_t *hits);
-
-  virtual Float_t GetCrystalSize(Int_t n) const {return fXtlSize[n];}
-  virtual Float_t GetWrapThickness(void) const {return fWrapThickness;}
-  virtual Float_t GetPINSize(Int_t n) const {return fPINSize[n];}
-  virtual Float_t GetCPVThickness(void) const {return fCPVThickness;}
-  virtual Float_t GetPHOSFoam(Int_t n) const {return fPHOSFoam[n];}
-  virtual Float_t GetPHOStxwall(Int_t n) const {return fPHOStxwall[n];}
-  virtual Float_t GetPHOSAir(Int_t n) const {return fPHOSAir[n];}
-  virtual Float_t GetRadius(Int_t n) const {return fRadius[n];}
-  virtual Float_t GetPHOSextra(Int_t n) const {return fPHOSextra[n];}
-  virtual Int_t   GetNphi(void) const {return fNphi;}
-  virtual Int_t   GetNz(void) const {return fNz;}
-  virtual Float_t GetNModules(void) const {return fNModules;}
-  virtual Float_t &GetModuleAngle(Int_t n) {return fPHOSAngle[n];}
-
-ClassDef(AliPHOSv2,1)  // Hits manager for PHOS, version 2
-
-};
-
-//////////////////////////////////////////////////////////////////////////////
-
-class AliPHOShitv2 : public AliHit{
-
-protected:
-  Int_t     fVolume[4];  //array of volumes. This is not GEANT NUMBV(), it is (BOX,LAYER,ROW,COLUMN) array.
-  Float_t   fELOS;       //Energy deposited
-  
-public:
-  AliPHOShitv2(void) {;}
-  AliPHOShitv2(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits);
-  AliPHOShitv2(AliPHOShitv2 const &rValue){*this=rValue;}
-  virtual ~AliPHOShitv2(void) {;}
-  
-  Int_t GetVolume(Int_t i) const {return fVolume[i];}
-  Float_t GetEnergy(void) const {return fELOS;}
-  
-  Bool_t operator==(AliPHOShitv2 const &rValue) const;
-  AliPHOShitv2 const operator+(AliPHOShitv2 const &rValue) const;
-
-ClassDef(AliPHOShitv2,1)  // Hits object for PHOS
-
-};
-
-//////////////////////////////////////////////////////////////////////////////
-
-#endif //#ifndef ALIPHOS_H
index 69bd929..79ad57a 100644 (file)
@@ -15,7 +15,7 @@ SRCS          =    AliPHOS.cxx AliPHOSv0.cxx AliPHOSHit.cxx \
                    AliPHOSRecPoint.cxx AliPHOSEmcRecPoint.cxx AliPHOSPpsdRecPoint.cxx \
                   AliPHOSClusterizer.cxx AliPHOSClusterizerv1.cxx  AliPHOSLink.cxx \
                   AliPHOSReconstructioner.cxx  AliPHOSTrackSegment.cxx \
-                   AliPHOSTrackSegmentMaker.cxx AliPHOSTrackSegmentMakerv1.cxx
+                   AliPHOSTrackSegmentMaker.cxx AliPHOSTrackSegmentMakerv1.cxx  ReconstructionTest.cxx PHOSHistos.cxx
 
 
 # C++ Headers
index a86a8c1..0f0127d 100644 (file)
Binary files a/PHOS/PHOS-HTML/aliphosclusterization.gif and b/PHOS/PHOS-HTML/aliphosclusterization.gif differ
index e35e28c..8f861dd 100644 (file)
Binary files a/PHOS/PHOS-HTML/aliphossimulation.gif and b/PHOS/PHOS-HTML/aliphossimulation.gif differ
index 75ee114..7a7bca2 100644 (file)
Binary files a/PHOS/PHOS-HTML/aliphossubtracking.gif and b/PHOS/PHOS-HTML/aliphossubtracking.gif differ
index 11bd9bf..2281cde 100644 (file)
     <stat name="dblClicksInToDoPane"
          value="0" />
     <stat name="longestToDoList"
-         value="88" />
+         value="143" />
     <stat name="longestAdd"
-         value="4" />
+         value="23" />
     <stat name="longestHot"
-         value="4" />
+         value="23" />
     <stat name="numCriticsFired"
-         value="39714" />
+         value="190134" />
     <stat name="numNotValid"
-         value="18" />
+         value="69" />
     <stat name="numCriticsApplied"
          value="0" />
     <stat name="toDoPerspectivesChanged"
-         value="1" />
+         value="0" />
     <stat name="navPerspectivesChanged"
-         value="3" />
+         value="2" />
     <stat name="clicksInNavPane"
          value="0" />
     <stat name="numFinds"
-         value="1" />
+         value="0" />
     <stat name="numJumpToRelated"
          value="0" />
     <stat name="numDecisionModel"
@@ -87,7 +87,7 @@
     <stat name="numChecks"
          value="0" />
     <stat name="Num_Button_Clicks"
-         value="5" />
+         value="2" />
     <stat name="Drags_To_New"
          value="0" />
     <stat name="Drags_To_Existing"
index 22c9e73..baaaf81 100644 (file)
           <isAbstract XMI.value="true"/>
           <isLeaf XMI.value="false"/>
           <isRoot XMI.value="false"/>
-          <realization> <XMI.reference target="S.100080"/> </realization>
-          <!-- realizations is: AliPHOSv4 -->
-        </Interface>
-      </ownedElement>
-      <ownedElement>
-        <Generalization XMI.id = "S.100079">
-          <name></name>
-          <visibility XMI.value = "public"/>
-          <discriminator>
-          </discriminator>
-          <subtype> <XMI.reference target="S.100078"/> </subtype>
-          <!-- subtype is: AliPHOS -->
-          <supertype> <XMI.reference target="S.100075"/> </supertype>
-          <!-- supertype is: AliDetector -->
-        </Generalization>
-      </ownedElement>
-      <ownedElement>
-        <Class XMI.id = "S.100080">
-          <name>AliPHOSv4</name>
-          <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="false"/>
-          <isLeaf XMI.value="false"/>
-          <isRoot XMI.value="false"/>
-          <isActive XMI.value = "false"/>
-          <specification> <XMI.reference target="S.100078"/> </specification>
-          <!-- specification is: AliPHOS -->
+          <realization> <XMI.reference target="S.101042"/> </realization>
+          <!-- realizations is: AliPHOSv0 -->
           <feature>
-            <Operation XMI.id = "S.100082">
-              <name>AddHit</name>
+            <Operation XMI.id = "S.101036">
+              <name>CreateMaterials</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
@@ -68,7 +44,7 @@
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100083">
+                <Parameter XMI.id = "S.101037">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
@@ -81,8 +57,8 @@
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100084">
-              <name>BuildGeometry</name>
+            <Operation XMI.id = "S.101038">
+              <name>GetGeometry</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100085">
+                <Parameter XMI.id = "S.101039">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100004"/> </type>
-                  <!-- Type is: void -->
-                </Parameter>
-              </parameter>
-            </Operation>
-          </feature>
-          <feature>
-            <Operation XMI.id = "S.100086">
-              <name>CreateGeometry</name>
-              <visibility XMI.value = "public"/>
-              <ownerScope XMI.value="instance"/>
-              <isQuery XMI.value="false"/>
-              <concurrency XMI.value="sequential"/>
-              <isPolymorphic XMI.value="false"/>
-              <operationSpecification>
-              </operationSpecification>
-              <parameter>
-                <Parameter XMI.id = "S.100087">
-                  <name>return</name>
-                  <visibility XMI.value = "public"/>
-                  <defaultValue>
-                  </defaultValue>
-                  <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100004"/> </type>
-                  <!-- Type is: void -->
-                </Parameter>
-              </parameter>
-            </Operation>
-          </feature>
-          <feature>
-            <Operation XMI.id = "S.100088">
-              <name>FinishEvent</name>
-              <visibility XMI.value = "public"/>
-              <ownerScope XMI.value="instance"/>
-              <isQuery XMI.value="false"/>
-              <concurrency XMI.value="sequential"/>
-              <isPolymorphic XMI.value="false"/>
-              <operationSpecification>
-              </operationSpecification>
-              <parameter>
-                <Parameter XMI.id = "S.100089">
-                  <name>return</name>
-                  <visibility XMI.value = "public"/>
-                  <defaultValue>
-                  </defaultValue>
-                  <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100004"/> </type>
-                  <!-- Type is: void -->
+                  <type> <XMI.reference target="S.101040"/> </type>
+                  <!-- Type is: AliPHOSGeometry * -->
                 </Parameter>
               </parameter>
             </Operation>
           </feature>
+        </Interface>
+      </ownedElement>
+      <ownedElement>
+        <Generalization XMI.id = "S.100079">
+          <name></name>
+          <visibility XMI.value = "public"/>
+          <discriminator>
+          </discriminator>
+          <subtype> <XMI.reference target="S.100078"/> </subtype>
+          <!-- subtype is: AliPHOS -->
+          <supertype> <XMI.reference target="S.100075"/> </supertype>
+          <!-- supertype is: AliDetector -->
+        </Generalization>
+      </ownedElement>
+      <ownedElement>
+        <Class XMI.id = "S.100094">
+          <name>AliPHOSGeometry</name>
+          <visibility XMI.value = "public"/>
+          <isAbstract XMI.value="false"/>
+          <isLeaf XMI.value="false"/>
+          <isRoot XMI.value="false"/>
+          <isActive XMI.value = "false"/>
           <feature>
-            <Operation XMI.id = "S.100090">
-              <name>MakeBranch</name>
+            <Operation XMI.id = "S.100114">
+              <name>IsInitialized</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100091">
+                <Parameter XMI.id = "S.101803">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100092">
-              <name>StepManager</name>
+            <Operation XMI.id = "S.100116">
+              <name>RelPosInAlice</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100093">
+                <Parameter XMI.id = "S.101806">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
               </parameter>
             </Operation>
           </feature>
-        </Class>
-      </ownedElement>
-      <ownedElement>
-        <Class XMI.id = "S.100094">
-          <name>AliPHOSGeometry</name>
-          <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="false"/>
-          <isLeaf XMI.value="false"/>
-          <isRoot XMI.value="false"/>
-          <isActive XMI.value = "false"/>
           <feature>
-            <Operation XMI.id = "S.100114">
-              <name>IsInitialized</name>
+            <Operation XMI.id = "S.100118">
+              <name>RelPosInModule</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100115">
+                <Parameter XMI.id = "S.101809">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100116">
-              <name>RelPosInAlice</name>
+            <Operation XMI.id = "S.100120">
+              <name>RelToAbsNumbering</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100117">
+                <Parameter XMI.id = "S.101812">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100118">
-              <name>RelPosInModule</name>
+            <Operation XMI.id = "S.100122">
+              <name>AbsToRelNumbering</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100119">
+                <Parameter XMI.id = "S.101815">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100120">
-              <name>RelToAbsNumbering</name>
+            <Operation XMI.id = "S.101816">
+              <name>many</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100121">
-                  <name>return</name>
+                <Parameter XMI.id = "S.101820">
+                  <name>getter/putter</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
-                  <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100004"/> </type>
-                  <!-- Type is: void -->
+                  <kind XMI.value="in"/>
+                  <type> <XMI.reference target="S.101819"/> </type>
+                  <!-- Type is: more -->
                 </Parameter>
               </parameter>
-            </Operation>
-          </feature>
-          <feature>
-            <Operation XMI.id = "S.100122">
-              <name>AbsToRelNumbering</name>
-              <visibility XMI.value = "public"/>
-              <ownerScope XMI.value="instance"/>
-              <isQuery XMI.value="false"/>
-              <concurrency XMI.value="sequential"/>
-              <isPolymorphic XMI.value="false"/>
-              <operationSpecification>
-              </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100123">
+                <Parameter XMI.id = "S.101821">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100004"/> </type>
-                  <!-- Type is: void -->
+                  <type> <XMI.reference target="S.101817"/> </type>
+                  <!-- Type is: and -->
                 </Parameter>
               </parameter>
             </Operation>
         </Class>
       </ownedElement>
       <ownedElement>
-        <Association XMI.id="S.100095">
-          <name>* fGeom</name>
-          <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="false"/>
-          <isLeaf XMI.value="false"/>
-          <isRoot XMI.value="false"/>
-            <connection>
-              <AssociationEnd XMI.id = "S.100096">
-                <name></name>
-                <visibility XMI.value = "public"/>
-                <isNavigable XMI.value="true"/>
-                <isOrdered XMI.value="false"/>
-                <aggregation XMI.value="aggregate"/>
-                <multiplicity>1</multiplicity>
-                <changeable XMI.value="none"/>
-                <targetScope XMI.value="instance"/>
-                <type> <XMI.reference target="S.100080"/> </type>
-                <!-- Type is: AliPHOSv4 -->
-              </AssociationEnd>
-            </connection>
-            <connection>
-              <AssociationEnd XMI.id = "S.100097">
-                <name></name>
-                <visibility XMI.value = "public"/>
-                <isNavigable XMI.value="true"/>
-                <isOrdered XMI.value="false"/>
-                <aggregation XMI.value="none"/>
-                <multiplicity>1</multiplicity>
-                <changeable XMI.value="none"/>
-                <targetScope XMI.value="instance"/>
-                <type> <XMI.reference target="S.100094"/> </type>
-                <!-- Type is: AliPHOSGeometry -->
-              </AssociationEnd>
-            </connection>
-        </Association>
-      </ownedElement>
-      <ownedElement>
         <Interface XMI.id = "S.100124">
           <name>AliHit</name>
           <visibility XMI.value = "public"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100151">
+                <Parameter XMI.id = "S.101852">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100010"/> </type>
-                  <!-- Type is: float -->
+                  <type> <XMI.reference target="S.101850"/> </type>
+                  <!-- Type is: Float_t -->
                 </Parameter>
               </parameter>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100152">
-              <name>G
-      
-      etId</name>
+            <Operation XMI.id = "S.101853">
+              <name>GetId</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100153">
+                <Parameter XMI.id = "S.101855">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100006"/> </type>
-                  <!-- Type is: int -->
+                  <type> <XMI.reference target="S.101118"/> </type>
+                  <!-- Type is: Int_t -->
                 </Parameter>
               </parameter>
             </Operation>
           </feature>
           <feature>
-            <Attribute XMI.id = "S.100127">
-              <name>fEnergy</name>
+            <Attribute XMI.id = "S.101856">
+              <name>fELOS</name>
               <visibility XMI.value = "private"/>
               <ownerScope XMI.value="instance"/>
               <changeable XMI.value="none"/>
               <initialValue>
                 0
               </initialValue>
+              <type> <XMI.reference target="S.101850"/> </type>
+              <!-- Type is: Float_t -->
             </Attribute>
           </feature>
           <feature>
               <initialValue>
                 0
               </initialValue>
-              <type> <XMI.reference target="S.100006"/> </type>
-              <!-- Type is: int -->
+              <type> <XMI.reference target="S.101118"/> </type>
+              <!-- Type is: Int_t -->
             </Attribute>
           </feature>
         </Class>
       </ownedElement>
       <ownedElement>
-        <Association XMI.id="S.100156">
-          <name>create</name>
-          <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="false"/>
-          <isLeaf XMI.value="false"/>
-          <isRoot XMI.value="false"/>
-            <connection>
-              <AssociationEnd XMI.id = "S.100157">
-                <name></name>
-                <visibility XMI.value = "public"/>
-                <isNavigable XMI.value="true"/>
-                <isOrdered XMI.value="false"/>
-                <aggregation XMI.value="none"/>
-                <multiplicity>0..*</multiplicity>
-                <changeable XMI.value="none"/>
-                <targetScope XMI.value="instance"/>
-                <type> <XMI.reference target="S.100125"/> </type>
-                <!-- Type is: AliPHOSHit -->
-              </AssociationEnd>
-            </connection>
-            <connection>
-              <AssociationEnd XMI.id = "S.100158">
-                <name></name>
-                <visibility XMI.value = "public"/>
-                <isNavigable XMI.value="false"/>
-                <isOrdered XMI.value="false"/>
-                <aggregation XMI.value="none"/>
-                <multiplicity>1</multiplicity>
-                <changeable XMI.value="none"/>
-                <targetScope XMI.value="instance"/>
-                <type> <XMI.reference target="S.100080"/> </type>
-                <!-- Type is: AliPHOSv4 -->
-              </AssociationEnd>
-            </connection>
-        </Association>
-      </ownedElement>
-      <ownedElement>
         <Interface XMI.id = "S.100159">
           <name>AliDigit</name>
           <visibility XMI.value = "public"/>
           <!-- specification is: AliDigit -->
           <!-- specification is: AliDigit -->
           <feature>
-            <Operation XMI.id = "S.100186">
-              <name>GetEnergy</name>
+            <Operation XMI.id = "S.101910">
+              <name>Compare</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100187">
+                <Parameter XMI.id = "S.102333">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100010"/> </type>
-                  <!-- Type is: float -->
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101912">
+              <name>GetAmp</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102336">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101118"/> </type>
+                  <!-- Type is: Int_t -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101918">
+              <name>IsSortable</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102339">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101919"/> </type>
+                  <!-- Type is: Bool_t -->
                 </Parameter>
               </parameter>
             </Operation>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100189">
+                <Parameter XMI.id = "S.102342">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100006"/> </type>
-                  <!-- Type is: int -->
+                  <type> <XMI.reference target="S.101118"/> </type>
+                  <!-- Type is: Int_t -->
                 </Parameter>
               </parameter>
             </Operation>
           </feature>
           <feature>
-            <Attribute XMI.id = "S.100162">
-              <name>fEnergy</name>
+            <Attribute XMI.id = "S.101900">
+              <name>fAmp</name>
               <visibility XMI.value = "private"/>
               <ownerScope XMI.value="instance"/>
               <changeable XMI.value="none"/>
               <initialValue>
                 0
               </initialValue>
+              <type> <XMI.reference target="S.101118"/> </type>
+              <!-- Type is: Int_t -->
             </Attribute>
           </feature>
           <feature>
               <initialValue>
                 0
               </initialValue>
-              <type> <XMI.reference target="S.100006"/> </type>
-              <!-- Type is: int -->
+              <type> <XMI.reference target="S.101118"/> </type>
+              <!-- Type is: Int_t -->
             </Attribute>
           </feature>
         </Class>
       </ownedElement>
       <ownedElement>
-        <Association XMI.id="S.100190">
-          <name></name>
-          <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="false"/>
-          <isLeaf XMI.value="false"/>
-          <isRoot XMI.value="false"/>
-            <connection>
-              <AssociationEnd XMI.id = "S.100191">
-                <name>create</name>
-                <visibility XMI.value = "public"/>
-                <isNavigable XMI.value="false"/>
-                <isOrdered XMI.value="false"/>
-                <aggregation XMI.value="none"/>
-                <multiplicity>1</multiplicity>
-                <changeable XMI.value="none"/>
-                <targetScope XMI.value="instance"/>
-                <type> <XMI.reference target="S.100080"/> </type>
-                <!-- Type is: AliPHOSv4 -->
-              </AssociationEnd>
-            </connection>
-            <connection>
-              <AssociationEnd XMI.id = "S.100192">
-                <name></name>
-                <visibility XMI.value = "public"/>
-                <isNavigable XMI.value="true"/>
-                <isOrdered XMI.value="false"/>
-                <aggregation XMI.value="none"/>
-                <multiplicity>0..*</multiplicity>
-                <changeable XMI.value="none"/>
-                <targetScope XMI.value="instance"/>
-                <type> <XMI.reference target="S.100160"/> </type>
-                <!-- Type is: AliPHOSDigit -->
-              </AssociationEnd>
-            </connection>
-        </Association>
-      </ownedElement>
-      <ownedElement>
         <Interface XMI.id = "S.100193">
           <name>AliPHOSClusterizer</name>
           <visibility XMI.value = "public"/>
           <realization> <XMI.reference target="S.100198"/> </realization>
           <!-- realizations is: AliPHOSClusterizerv1 -->
           <feature>
+            <Operation XMI.id = "S.102512">
+              <name>Calibrate</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102514">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
             <Operation XMI.id = "S.100194">
               <name>GetNumberOfClustersFound</name>
               <visibility XMI.value = "public"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100195">
+                <Parameter XMI.id = "S.102517">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100006"/> </type>
-                  <!-- Type is: int -->
+                  <type> <XMI.reference target="S.101118"/> </type>
+                  <!-- Type is: Int_t -->
                 </Parameter>
               </parameter>
             </Operation>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100197">
+                <Parameter XMI.id = "S.102520">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100287">
+                <Parameter XMI.id = "S.102370">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.102368"/> </type>
+                  <!-- Type is: Boo_tl -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102371">
+              <name>Calibrate</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102373">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100288"/> </type>
-                  <!-- Type is: bool -->
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
                 </Parameter>
               </parameter>
             </Operation>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100290">
+                <Parameter XMI.id = "S.102376">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102377">
+              <name>GetLocalMaxCut</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102379">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101850"/> </type>
+                  <!-- Type is: Float_t -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102380">
+              <name>GetLocalWeightCut</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102382">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101850"/> </type>
+                  <!-- Type is: Float_t -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102383">
+              <name>GetNumberOfClustersFound</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102385">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100292">
+                <Parameter XMI.id = "S.102388">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101919"/> </type>
+                  <!-- Type is: Bool_t -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102389">
+              <name>MakeClusters</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102391">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100294">
+                <Parameter XMI.id = "S.102394">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102395">
+              <name>SetCalibrationParameters</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102397">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100296">
+                <Parameter XMI.id = "S.102400">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100298">
+                <Parameter XMI.id = "S.102403">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102404">
+              <name>SetLocalMaxCut</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102406">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102407">
+              <name>SetLogWeightCut</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102409">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100300">
+                <Parameter XMI.id = "S.102412">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100302">
+                <Parameter XMI.id = "S.102415">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
             </Operation>
           </feature>
           <feature>
+            <Attribute XMI.id = "S.102416">
+              <name>fA</name>
+              <visibility XMI.value = "private"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+                0.
+              </initialValue>
+              <type> <XMI.reference target="S.101850"/> </type>
+              <!-- Type is: Float_t -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102418">
+              <name>fB</name>
+              <visibility XMI.value = "private"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+                0.1
+              </initialValue>
+              <type> <XMI.reference target="S.101850"/> </type>
+              <!-- Type is: Float_t -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102419">
+              <name>fLocMaxCut</name>
+              <visibility XMI.value = "private"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+                0.06
+              </initialValue>
+              <type> <XMI.reference target="S.101850"/> </type>
+              <!-- Type is: Float_t -->
+            </Attribute>
+          </feature>
+          <feature>
             <Attribute XMI.id = "S.100200">
               <name>fNumberOfEmcClusters</name>
               <visibility XMI.value = "private"/>
               <initialValue>
                 0
               </initialValue>
-              <type> <XMI.reference target="S.100006"/> </type>
-              <!-- Type is: int -->
+              <type> <XMI.reference target="S.101118"/> </type>
+              <!-- Type is: Int_t -->
             </Attribute>
           </feature>
           <feature>
               <initialValue>
                 0
               </initialValue>
-              <type> <XMI.reference target="S.100006"/> </type>
-              <!-- Type is: int -->
+              <type> <XMI.reference target="S.101118"/> </type>
+              <!-- Type is: Int_t -->
             </Attribute>
           </feature>
           <feature>
               <multiplicity>1</multiplicity>
               <targetScope XMI.value="instance"/>
               <initialValue>
-                0
+                0.1
               </initialValue>
+              <type> <XMI.reference target="S.101850"/> </type>
+              <!-- Type is: Float_t -->
             </Attribute>
           </feature>
           <feature>
               <multiplicity>1</multiplicity>
               <targetScope XMI.value="instance"/>
               <initialValue>
-                0
+                0.01
               </initialValue>
+              <type> <XMI.reference target="S.101850"/> </type>
+              <!-- Type is: Float_t -->
             </Attribute>
           </feature>
           <feature>
               <multiplicity>1</multiplicity>
               <targetScope XMI.value="instance"/>
               <initialValue>
-                0
+                0.00000015
               </initialValue>
+              <type> <XMI.reference target="S.101850"/> </type>
+              <!-- Type is: Float_t -->
             </Attribute>
           </feature>
           <feature>
               <multiplicity>1</multiplicity>
               <targetScope XMI.value="instance"/>
               <initialValue>
-                0
+                0.0000001
               </initialValue>
+              <type> <XMI.reference target="S.101850"/> </type>
+              <!-- Type is: Float_t -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102433">
+              <name>fW0</name>
+              <visibility XMI.value = "private"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+                5.5
+              </initialValue>
+              <type> <XMI.reference target="S.101850"/> </type>
+              <!-- Type is: Float_t -->
             </Attribute>
           </feature>
         </Class>
         </Association>
       </ownedElement>
       <ownedElement>
-        <Association XMI.id="S.100307">
-          <name></name>
-          <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="false"/>
-          <isLeaf XMI.value="false"/>
-          <isRoot XMI.value="false"/>
-            <connection>
-              <AssociationEnd XMI.id = "S.100308">
-                <name>create</name>
-                <visibility XMI.value = "public"/>
-                <isNavigable XMI.value="false"/>
-                <isOrdered XMI.value="false"/>
-                <aggregation XMI.value="none"/>
-                <multiplicity>1</multiplicity>
-                <changeable XMI.value="none"/>
-                <targetScope XMI.value="instance"/>
-                <type> <XMI.reference target="S.100080"/> </type>
-                <!-- Type is: AliPHOSv4 -->
-              </AssociationEnd>
-            </connection>
-            <connection>
-              <AssociationEnd XMI.id = "S.100309">
-                <name></name>
-                <visibility XMI.value = "public"/>
-                <isNavigable XMI.value="true"/>
-                <isOrdered XMI.value="false"/>
-                <aggregation XMI.value="none"/>
-                <multiplicity>0..*</multiplicity>
-                <changeable XMI.value="none"/>
-                <targetScope XMI.value="instance"/>
-                <type> <XMI.reference target="S.100160"/> </type>
-                <!-- Type is: AliPHOSDigit -->
-              </AssociationEnd>
-            </connection>
-        </Association>
-      </ownedElement>
-      <ownedElement>
         <Association XMI.id="S.100313">
           <name></name>
           <visibility XMI.value = "public"/>
         </Association>
       </ownedElement>
       <ownedElement>
-        <Interface XMI.id = "S.100322">
-          <name>AliPHOSCluster</name>
+        <Class XMI.id = "S.100334">
+          <name>AliPHOSEmcRecPoint</name>
           <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="true"/>
+          <isAbstract XMI.value="false"/>
           <isLeaf XMI.value="false"/>
           <isRoot XMI.value="false"/>
-          <realization> <XMI.reference target="S.100334"/> </realization>
-          <realization> <XMI.reference target="S.100336"/> </realization>
-          <!-- realizations is: AliPHOSEmcCluster -->
-          <!-- realizations is: AliPHOSPpsdCluster -->
+          <isActive XMI.value = "false"/>
+        </Class>
+      </ownedElement>
+      <ownedElement>
+        <Class XMI.id = "S.100336">
+          <name>AliPHOSPpsdRecPoint</name>
+          <visibility XMI.value = "public"/>
+          <isAbstract XMI.value="false"/>
+          <isLeaf XMI.value="false"/>
+          <isRoot XMI.value="false"/>
+          <isActive XMI.value = "false"/>
+        </Class>
+      </ownedElement>
+      <ownedElement>
+        <Class XMI.id = "S.100649">
+          <name>AliPHOSTrackSegmentMakerv1</name>
+          <visibility XMI.value = "public"/>
+          <isAbstract XMI.value="false"/>
+          <isLeaf XMI.value="false"/>
+          <isRoot XMI.value="false"/>
+          <isActive XMI.value = "false"/>
           <feature>
-            <Operation XMI.id = "S.100323">
-              <name>AddDigit</name>
+            <Operation XMI.id = "S.102723">
+              <name>FillOneModule</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100324">
+                <Parameter XMI.id = "S.102725">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100325">
-              <name>GetMultiplicity</name>
-              <visibility XMI.value = "public"/>
-              <ownerScope XMI.value="instance"/>
-              <isQuery XMI.value="false"/>
-              <concurrency XMI.value="sequential"/>
-              <isPolymorphic XMI.value="false"/>
-              <operationSpecification>
-              </operationSpecification>
-              <parameter>
-                <Parameter XMI.id = "S.100326">
-                  <name>return</name>
-                  <visibility XMI.value = "public"/>
-                  <defaultValue>
-                  </defaultValue>
-                  <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100006"/> </type>
-                  <!-- Type is: int -->
-                </Parameter>
-              </parameter>
-            </Operation>
-          </feature>
-          <feature>
-            <Operation XMI.id = "S.100327">
-              <name>GetDigitsList</name>
+            <Operation XMI.id = "S.102726">
+              <name>FindFit</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100328">
+                <Parameter XMI.id = "S.102728">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100329">
-              <name>Print</name>
+            <Operation XMI.id = "S.100683">
+              <name>GetDistanceInPHOSPlane</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100330">
+                <Parameter XMI.id = "S.102731">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100562">
-              <name>GetRelPosition</name>
+            <Operation XMI.id = "S.102732">
+              <name>MakeLinks</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100563">
+                <Parameter XMI.id = "S.102734">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
               </parameter>
             </Operation>
           </feature>
-        </Interface>
-      </ownedElement>
-      <ownedElement>
-        <Class XMI.id = "S.100334">
-          <name>AliPHOSEmcCluster</name>
-          <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="false"/>
-          <isLeaf XMI.value="false"/>
-          <isRoot XMI.value="false"/>
-          <isActive XMI.value = "false"/>
-          <specification> <XMI.reference target="S.100322"/> </specification>
-          <!-- specification is: AliPHOSCluster -->
           <feature>
-            <Operation XMI.id = "S.100535">
-              <name>AreNeighbours</name>
+            <Operation XMI.id = "S.102735">
+              <name>MakePairs</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100536">
-                  <name>return</name>
-                  <visibility XMI.value = "public"/>
-                  <defaultValue>
-                  </defaultValue>
-                  <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100288"/> </type>
-                  <!-- Type is: bool -->
-                </Parameter>
-              </parameter>
-            </Operation>
-          </feature>
-          <feature>
-            <Operation XMI.id = "S.100537">
-              <name>Compare</name>
-              <visibility XMI.value = "public"/>
-              <ownerScope XMI.value="instance"/>
-              <isQuery XMI.value="false"/>
-              <concurrency XMI.value="sequential"/>
-              <isPolymorphic XMI.value="false"/>
-              <operationSpecification>
-              </operationSpecification>
-              <parameter>
-                <Parameter XMI.id = "S.100538">
+                <Parameter XMI.id = "S.102737">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100539">
-              <name>GetAbsPosition</name>
+            <Operation XMI.id = "S.102738">
+              <name>MakeTrackSegments</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100540">
+                <Parameter XMI.id = "S.102740">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100541">
-              <name>GetDispersion</name>
-              <visibility XMI.value = "public"/>
-              <ownerScope XMI.value="instance"/>
-              <isQuery XMI.value="false"/>
-              <concurrency XMI.value="sequential"/>
-              <isPolymorphic XMI.value="false"/>
-              <operationSpecification>
-              </operationSpecification>
-              <parameter>
-                <Parameter XMI.id = "S.100542">
-                  <name>return</name>
-                  <visibility XMI.value = "public"/>
-                  <defaultValue>
-                  </defaultValue>
-                  <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100010"/> </type>
-                  <!-- Type is: float -->
-                </Parameter>
-              </parameter>
-            </Operation>
-          </feature>
-          <feature>
-            <Operation XMI.id = "S.100543">
-              <name>GetElipsAxis</name>
+            <Operation XMI.id = "S.102741">
+              <name>SetMaxEmcPpsdDistance</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100544">
+                <Parameter XMI.id = "S.102743">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100545">
-              <name>GetMaximalEnergy</name>
+            <Operation XMI.id = "S.102744">
+              <name>ShowerShape</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100546">
+                <Parameter XMI.id = "S.102746">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100010"/> </type>
-                  <!-- Type is: float -->
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
                 </Parameter>
               </parameter>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100547">
-              <name>GetMultiplicityAtLevel</name>
+            <Operation XMI.id = "S.102747">
+              <name>UnfoldClusters</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100548">
+                <Parameter XMI.id = "S.102749">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100549">
-              <name>GetNumberOfLocalMaxima</name>
+            <Operation XMI.id = "S.102750">
+              <name>UnfoldingChiSquare</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100550">
+                <Parameter XMI.id = "S.102752">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100551">
-              <name>GetRelPosition</name>
+            <Attribute XMI.id = "S.100651">
+              <name>fDelta</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
-              <isQuery XMI.value="false"/>
-              <concurrency XMI.value="sequential"/>
-              <isPolymorphic XMI.value="false"/>
-              <operationSpecification>
-              </operationSpecification>
-              <parameter>
-                <Parameter XMI.id = "S.100552">
-                  <name>return</name>
-                  <visibility XMI.value = "public"/>
-                  <defaultValue>
-                  </defaultValue>
-                  <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100004"/> </type>
-                  <!-- Type is: void -->
-                </Parameter>
-              </parameter>
-            </Operation>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+                0
+              </initialValue>
+            </Attribute>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100553">
-              <name>GetTotalEnergy</name>
+            <Attribute XMI.id = "S.100653">
+              <name>fR0</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
-              <isQuery XMI.value="false"/>
-              <concurrency XMI.value="sequential"/>
-              <isPolymorphic XMI.value="false"/>
-              <operationSpecification>
-              </operationSpecification>
-              <parameter>
-                <Parameter XMI.id = "S.100554">
-                  <name>return</name>
-                  <visibility XMI.value = "public"/>
-                  <defaultValue>
-                  </defaultValue>
-                  <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100004"/> </type>
-                  <!-- Type is: void -->
-                </Parameter>
-              </parameter>
-            </Operation>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+                0
+              </initialValue>
+            </Attribute>
           </feature>
+        </Class>
+      </ownedElement>
+      <ownedElement>
+        <Association XMI.id="S.100685">
+          <name></name>
+          <visibility XMI.value = "public"/>
+          <isAbstract XMI.value="false"/>
+          <isLeaf XMI.value="false"/>
+          <isRoot XMI.value="false"/>
+            <connection>
+              <AssociationEnd XMI.id = "S.100686">
+                <name>use</name>
+                <visibility XMI.value = "public"/>
+                <isNavigable XMI.value="false"/>
+                <isOrdered XMI.value="false"/>
+                <aggregation XMI.value="none"/>
+                <multiplicity>1</multiplicity>
+                <changeable XMI.value="none"/>
+                <targetScope XMI.value="instance"/>
+                <type> <XMI.reference target="S.100649"/> </type>
+                <!-- Type is: AliPHOSTrackSegmentMakerv1 -->
+              </AssociationEnd>
+            </connection>
+            <connection>
+              <AssociationEnd XMI.id = "S.100687">
+                <name></name>
+                <visibility XMI.value = "public"/>
+                <isNavigable XMI.value="true"/>
+                <isOrdered XMI.value="false"/>
+                <aggregation XMI.value="none"/>
+                <multiplicity>1</multiplicity>
+                <changeable XMI.value="none"/>
+                <targetScope XMI.value="instance"/>
+                <type> <XMI.reference target="S.100094"/> </type>
+                <!-- Type is: AliPHOSGeometry -->
+              </AssociationEnd>
+            </connection>
+        </Association>
+      </ownedElement>
+      <ownedElement>
+        <Class XMI.id = "S.100688">
+          <name>AliPHOSSubTrack</name>
+          <visibility XMI.value = "public"/>
+          <isAbstract XMI.value="false"/>
+          <isLeaf XMI.value="false"/>
+          <isRoot XMI.value="false"/>
+          <isActive XMI.value = "false"/>
           <feature>
-            <Operation XMI.id = "S.100555">
-              <name>SetLocalMaxCut</name>
+            <Operation XMI.id = "S.102804">
+              <name>GetDistannceInPHOSPlane</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100556">
+                <Parameter XMI.id = "S.102806">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100004"/> </type>
-                  <!-- Type is: void -->
+                  <type> <XMI.reference target="S.101850"/> </type>
+                  <!-- Type is: Float_t -->
                 </Parameter>
               </parameter>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100557">
-              <name>SetLowWeightCut</name>
+            <Operation XMI.id = "S.102807">
+              <name>GetEnergy</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100558">
+                <Parameter XMI.id = "S.102809">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100004"/> </type>
-                  <!-- Type is: void -->
+                  <type> <XMI.reference target="S.101850"/> </type>
+                  <!-- Type is: Float_t -->
                 </Parameter>
               </parameter>
             </Operation>
           </feature>
           <feature>
-            <Attribute XMI.id = "S.100338">
-              <name>fDigitsList</name>
-              <visibility XMI.value = "private"/>
-              <ownerScope XMI.value="instance"/>
-              <changeable XMI.value="none"/>
-              <multiplicity>1</multiplicity>
-              <targetScope XMI.value="instance"/>
-              <initialValue>
-                0
-              </initialValue>
-            </Attribute>
-          </feature>
-          <feature>
-            <Attribute XMI.id = "S.100401">
-              <name>fEnergy</name>
-              <visibility XMI.value = "private"/>
-              <ownerScope XMI.value="instance"/>
-              <changeable XMI.value="none"/>
-              <multiplicity>1</multiplicity>
-              <targetScope XMI.value="instance"/>
-              <initialValue>
-                0
-              </initialValue>
-            </Attribute>
-          </feature>
-          <feature>
-            <Attribute XMI.id = "S.100403">
-              <name>fMultiplicity</name>
-              <visibility XMI.value = "private"/>
-              <ownerScope XMI.value="instance"/>
-              <changeable XMI.value="none"/>
-              <multiplicity>1</multiplicity>
-              <targetScope XMI.value="instance"/>
-              <initialValue>
-                0
-              </initialValue>
-              <type> <XMI.reference target="S.100006"/> </type>
-              <!-- Type is: int -->
-            </Attribute>
-          </feature>
-          <feature>
-            <Attribute XMI.id = "S.100465">
-              <name>fDelta</name>
-              <visibility XMI.value = "private"/>
-              <ownerScope XMI.value="instance"/>
-              <changeable XMI.value="none"/>
-              <multiplicity>1</multiplicity>
-              <targetScope XMI.value="instance"/>
-              <initialValue>
-                4.
-              </initialValue>
-            </Attribute>
-          </feature>
-          <feature>
-            <Attribute XMI.id = "S.100481">
-              <name>fLocMaxCut</name>
-              <visibility XMI.value = "private"/>
-              <ownerScope XMI.value="instance"/>
-              <changeable XMI.value="none"/>
-              <multiplicity>1</multiplicity>
-              <targetScope XMI.value="instance"/>
-              <initialValue>
-                0.6
-              </initialValue>
-            </Attribute>
-          </feature>
-          <feature>
-            <Attribute XMI.id = "S.100497">
-              <name>fW0</name>
-              <visibility XMI.value = "public"/>
-              <ownerScope XMI.value="instance"/>
-              <changeable XMI.value="none"/>
-              <multiplicity>1</multiplicity>
-              <targetScope XMI.value="instance"/>
-              <initialValue>
-                4.
-              </initialValue>
-            </Attribute>
-          </feature>
-        </Class>
-      </ownedElement>
-      <ownedElement>
-        <Class XMI.id = "S.100336">
-          <name>AliPHOSPpsdCluster</name>
-          <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="false"/>
-          <isLeaf XMI.value="false"/>
-          <isRoot XMI.value="false"/>
-          <isActive XMI.value = "false"/>
-          <specification> <XMI.reference target="S.100322"/> </specification>
-          <!-- specification is: AliPHOSCluster -->
-          <feature>
-            <Operation XMI.id = "S.100360">
-              <name>Compare</name>
+            <Operation XMI.id = "S.102810">
+              <name>GetMomentumDirection</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100795">
+                <Parameter XMI.id = "S.102812">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100006"/> </type>
-                  <!-- Type is: int -->
+                  <type> <XMI.reference target="S.101919"/> </type>
+                  <!-- Type is: Bool_t -->
                 </Parameter>
               </parameter>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100560">
-              <name>GetRelPosition</name>
+            <Operation XMI.id = "S.102813">
+              <name>GetParticuleType</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100798">
+                <Parameter XMI.id = "S.102815">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100004"/> </type>
-                  <!-- Type is: void -->
+                  <type> <XMI.reference target="S.101118"/> </type>
+                  <!-- Type is: Int_t -->
                 </Parameter>
               </parameter>
             </Operation>
           </feature>
           <feature>
-            <Operation XMI.id = "S.100564">
-              <name>GetUp</name>
+            <Operation XMI.id = "S.102816">
+              <name>GetPosition</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100801">
+                <Parameter XMI.id = "S.102818">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100288"/> </type>
-                  <!-- Type is: bool -->
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
                 </Parameter>
               </parameter>
             </Operation>
           </feature>
           <feature>
-            <Attribute XMI.id = "S.100362">
-              <name>fDigitsList</name>
-              <visibility XMI.value = "public"/>
-              <ownerScope XMI.value="instance"/>
-              <changeable XMI.value="none"/>
-              <multiplicity>1</multiplicity>
-              <targetScope XMI.value="instance"/>
-              <initialValue>
-                0
-              </initialValue>
-            </Attribute>
-          </feature>
-          <feature>
-            <Attribute XMI.id = "S.100441">
-              <name>fEnergy</name>
-              <visibility XMI.value = "private"/>
-              <ownerScope XMI.value="instance"/>
-              <changeable XMI.value="none"/>
-              <multiplicity>1</multiplicity>
-              <targetScope XMI.value="instance"/>
-              <initialValue>
-                0
-              </initialValue>
-            </Attribute>
-          </feature>
-          <feature>
-            <Attribute XMI.id = "S.100443">
-              <name>fMultiplicity</name>
-              <visibility XMI.value = "private"/>
-              <ownerScope XMI.value="instance"/>
-              <changeable XMI.value="none"/>
-              <multiplicity>1</multiplicity>
-              <targetScope XMI.value="instance"/>
-              <initialValue>
-                0
-              </initialValue>
-              <type> <XMI.reference target="S.100006"/> </type>
-              <!-- Type is: int -->
-            </Attribute>
-          </feature>
-        </Class>
-      </ownedElement>
-      <ownedElement>
-        <Interface XMI.id = "S.100566">
-          <name>AliPHOSSubTracker</name>
-          <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="true"/>
-          <isLeaf XMI.value="false"/>
-          <isRoot XMI.value="false"/>
-          <realization> <XMI.reference target="S.100649"/> </realization>
-          <!-- realizations is: AliPHOSSubTrackerv1 -->
-          <feature>
-            <Operation XMI.id = "S.100567">
-              <name>MakeSubTracks</name>
+            <Operation XMI.id = "S.102819">
+              <name>Print</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100568">
+                <Parameter XMI.id = "S.102821">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
               </parameter>
             </Operation>
           </feature>
-        </Interface>
-      </ownedElement>
-      <ownedElement>
-        <Class XMI.id = "S.100649">
-          <name>AliPHOSSubTrackerv1</name>
-          <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="false"/>
-          <isLeaf XMI.value="false"/>
-          <isRoot XMI.value="false"/>
-          <isActive XMI.value = "false"/>
-          <specification> <XMI.reference target="S.100566"/> </specification>
-          <!-- specification is: AliPHOSSubTracker -->
           <feature>
-            <Operation XMI.id = "S.100683">
-              <name>GetDistanceInPHOSPlane</name>
+            <Operation XMI.id = "S.102822">
+              <name>SetDispersionCutOff</name>
               <visibility XMI.value = "public"/>
               <ownerScope XMI.value="instance"/>
               <isQuery XMI.value="false"/>
               <operationSpecification>
               </operationSpecification>
               <parameter>
-                <Parameter XMI.id = "S.100684">
+                <Parameter XMI.id = "S.102824">
                   <name>return</name>
                   <visibility XMI.value = "public"/>
                   <defaultValue>
                   </defaultValue>
                   <kind XMI.value="return"/>
-                  <type> <XMI.reference target="S.100010"/> </type>
-                  <!-- Type is: float -->
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
                 </Parameter>
               </parameter>
             </Operation>
           </feature>
           <feature>
-            <Attribute XMI.id = "S.100651">
-              <name>fDelta</name>
-              <visibility XMI.value = "public"/>
-              <ownerScope XMI.value="instance"/>
-              <changeable XMI.value="none"/>
-              <multiplicity>1</multiplicity>
-              <targetScope XMI.value="instance"/>
-              <initialValue>
-                0
-              </initialValue>
-            </Attribute>
-          </feature>
-          <feature>
-            <Attribute XMI.id = "S.100653">
-              <name>fR0</name>
-              <visibility XMI.value = "public"/>
-              <ownerScope XMI.value="instance"/>
-              <changeable XMI.value="none"/>
-              <multiplicity>1</multiplicity>
-              <targetScope XMI.value="instance"/>
-              <initialValue>
-                0
-              </initialValue>
-            </Attribute>
-          </feature>
-        </Class>
-      </ownedElement>
-      <ownedElement>
-        <Association XMI.id="S.100685">
-          <name></name>
-          <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="false"/>
-          <isLeaf XMI.value="false"/>
-          <isRoot XMI.value="false"/>
-            <connection>
-              <AssociationEnd XMI.id = "S.100686">
-                <name>use</name>
-                <visibility XMI.value = "public"/>
-                <isNavigable XMI.value="false"/>
-                <isOrdered XMI.value="false"/>
-                <aggregation XMI.value="none"/>
-                <multiplicity>1</multiplicity>
-                <changeable XMI.value="none"/>
-                <targetScope XMI.value="instance"/>
-                <type> <XMI.reference target="S.100649"/> </type>
-                <!-- Type is: AliPHOSSubTrackerv1 -->
-              </AssociationEnd>
-            </connection>
-            <connection>
-              <AssociationEnd XMI.id = "S.100687">
-                <name></name>
-                <visibility XMI.value = "public"/>
-                <isNavigable XMI.value="true"/>
-                <isOrdered XMI.value="false"/>
-                <aggregation XMI.value="none"/>
-                <multiplicity>1</multiplicity>
-                <changeable XMI.value="none"/>
-                <targetScope XMI.value="instance"/>
-                <type> <XMI.reference target="S.100094"/> </type>
-                <!-- Type is: AliPHOSGeometry -->
-              </AssociationEnd>
-            </connection>
-        </Association>
-      </ownedElement>
-      <ownedElement>
-        <Class XMI.id = "S.100688">
-          <name>AliPHOSSubTrack</name>
-          <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="false"/>
-          <isLeaf XMI.value="false"/>
-          <isRoot XMI.value="false"/>
-          <isActive XMI.value = "false"/>
-          <feature>
             <Attribute XMI.id = "S.100692">
               <name>fCutOnDispersion</name>
               <visibility XMI.value = "private"/>
               <initialValue>
                 1.5
               </initialValue>
+              <type> <XMI.reference target="S.101850"/> </type>
+              <!-- Type is: Float_t -->
             </Attribute>
           </feature>
           <feature>
-            <Attribute XMI.id = "S.100694">
-              <name>fEmcCluster</name>
-              <visibility XMI.value = "public"/>
+            <Attribute XMI.id = "S.102793">
+              <name>fEmcRecPoint</name>
+              <visibility XMI.value = "private"/>
               <ownerScope XMI.value="instance"/>
               <changeable XMI.value="none"/>
               <multiplicity>1</multiplicity>
               <targetScope XMI.value="instance"/>
               <initialValue>
-                0
               </initialValue>
+              <type> <XMI.reference target="S.102794"/> </type>
+              <!-- Type is: AliPHOSEmcRecPoint* -->
             </Attribute>
           </feature>
           <feature>
             <Attribute XMI.id = "S.100696">
               <name>fPpsdLow</name>
-              <visibility XMI.value = "public"/>
+              <visibility XMI.value = "private"/>
               <ownerScope XMI.value="instance"/>
               <changeable XMI.value="none"/>
               <multiplicity>1</multiplicity>
               <targetScope XMI.value="instance"/>
               <initialValue>
-                0
               </initialValue>
+              <type> <XMI.reference target="S.102796"/> </type>
+              <!-- Type is: AliPHOSPpsdRecPoint* -->
             </Attribute>
           </feature>
           <feature>
             <Attribute XMI.id = "S.100698">
               <name>fPpsdUp</name>
-              <visibility XMI.value = "public"/>
+              <visibility XMI.value = "private"/>
               <ownerScope XMI.value="instance"/>
               <changeable XMI.value="none"/>
               <multiplicity>1</multiplicity>
               <targetScope XMI.value="instance"/>
               <initialValue>
-                0
               </initialValue>
+              <type> <XMI.reference target="S.102798"/> </type>
+              <!-- Type is: AliPHOSAppsdRecPoint* -->
             </Attribute>
           </feature>
         </Class>
                 <changeable XMI.value="none"/>
                 <targetScope XMI.value="instance"/>
                 <type> <XMI.reference target="S.100649"/> </type>
-                <!-- Type is: AliPHOSSubTrackerv1 -->
+                <!-- Type is: AliPHOSTrackSegmentMakerv1 -->
               </AssociationEnd>
             </connection>
             <connection>
                 <changeable XMI.value="none"/>
                 <targetScope XMI.value="instance"/>
                 <type> <XMI.reference target="S.100334"/> </type>
-                <!-- Type is: AliPHOSEmcCluster -->
+                <!-- Type is: AliPHOSEmcRecPoint -->
               </AssociationEnd>
             </connection>
         </Association>
                 <changeable XMI.value="none"/>
                 <targetScope XMI.value="instance"/>
                 <type> <XMI.reference target="S.100336"/> </type>
-                <!-- Type is: AliPHOSPpsdCluster -->
+                <!-- Type is: AliPHOSPpsdRecPoint -->
               </AssociationEnd>
             </connection>
         </Association>
                 <changeable XMI.value="none"/>
                 <targetScope XMI.value="instance"/>
                 <type> <XMI.reference target="S.100649"/> </type>
-                <!-- Type is: AliPHOSSubTrackerv1 -->
+                <!-- Type is: AliPHOSTrackSegmentMakerv1 -->
               </AssociationEnd>
             </connection>
             <connection>
                 <changeable XMI.value="none"/>
                 <targetScope XMI.value="instance"/>
                 <type> <XMI.reference target="S.100334"/> </type>
-                <!-- Type is: AliPHOSEmcCluster -->
+                <!-- Type is: AliPHOSEmcRecPoint -->
               </AssociationEnd>
             </connection>
         </Association>
                 <changeable XMI.value="none"/>
                 <targetScope XMI.value="instance"/>
                 <type> <XMI.reference target="S.100649"/> </type>
-                <!-- Type is: AliPHOSSubTrackerv1 -->
+                <!-- Type is: AliPHOSTrackSegmentMakerv1 -->
               </AssociationEnd>
             </connection>
             <connection>
                 <changeable XMI.value="none"/>
                 <targetScope XMI.value="instance"/>
                 <type> <XMI.reference target="S.100336"/> </type>
-                <!-- Type is: AliPHOSPpsdCluster -->
+                <!-- Type is: AliPHOSPpsdRecPoint -->
               </AssociationEnd>
             </connection>
         </Association>
                 <changeable XMI.value="none"/>
                 <targetScope XMI.value="instance"/>
                 <type> <XMI.reference target="S.100334"/> </type>
-                <!-- Type is: AliPHOSEmcCluster -->
+                <!-- Type is: AliPHOSEmcRecPoint -->
               </AssociationEnd>
             </connection>
         </Association>
                 <changeable XMI.value="none"/>
                 <targetScope XMI.value="instance"/>
                 <type> <XMI.reference target="S.100336"/> </type>
-                <!-- Type is: AliPHOSPpsdCluster -->
+                <!-- Type is: AliPHOSPpsdRecPoint -->
               </AssociationEnd>
             </connection>
         </Association>
         </Association>
       </ownedElement>
       <ownedElement>
-        <Association XMI.id="S.100994">
-          <name>fSubTracker</name>
-          <visibility XMI.value = "public"/>
-          <isAbstract XMI.value="false"/>
-          <isLeaf XMI.value="false"/>
-          <isRoot XMI.value="false"/>
-            <connection>
-              <AssociationEnd XMI.id = "S.100995">
-                <name></name>
-                <visibility XMI.value = "public"/>
-                <isNavigable XMI.value="true"/>
-                <isOrdered XMI.value="false"/>
-                <aggregation XMI.value="aggregate"/>
-                <multiplicity>1</multiplicity>
-                <changeable XMI.value="none"/>
-                <targetScope XMI.value="instance"/>
-                <type> <XMI.reference target="S.100975"/> </type>
-                <!-- Type is: AliPHOSReconstructioner -->
-              </AssociationEnd>
-            </connection>
-            <connection>
-              <AssociationEnd XMI.id = "S.100996">
-                <name></name>
-                <visibility XMI.value = "public"/>
-                <isNavigable XMI.value="true"/>
-                <isOrdered XMI.value="false"/>
-                <aggregation XMI.value="none"/>
-                <multiplicity>1</multiplicity>
-                <changeable XMI.value="none"/>
-                <targetScope XMI.value="instance"/>
-                <type> <XMI.reference target="S.100566"/> </type>
-                <!-- Type is: AliPHOSSubTracker -->
-              </AssociationEnd>
-            </connection>
-        </Association>
-      </ownedElement>
-      <ownedElement>
         <Actor XMI.id = "S.101003">
           <name>PHOS actor</name>
           <visibility XMI.value = "public"/>
@@ -3526,7 +3333,6 @@ energy loss</name>
           <visibility XMI.value = "public"/>
           <discriminator>
           </discriminator>
-          <stereotype> <XMI.reference target="S.100348" /> </stereotype>
           <subtype> <XMI.reference target="S.101022"/> </subtype>
           <!-- subtype is: Photon: 
 conversion probability
@@ -3541,8 +3347,7 @@ the way of the particle -->
         <UseCase XMI.id = "S.101024">
           <name>Charged and Neutral hadrons:
 energy loss
-momentum smearing
-</name>
+momentum smearing</name>
           <visibility XMI.value = "public"/>
           <isAbstract XMI.value="false"/>
           <isLeaf XMI.value="false"/>
@@ -3555,12 +3360,10 @@ momentum smearing
           <visibility XMI.value = "public"/>
           <discriminator>
           </discriminator>
-          <stereotype> <XMI.reference target="S.100348" /> </stereotype>
           <subtype> <XMI.reference target="S.101024"/> </subtype>
           <!-- subtype is: Charged and Neutral hadrons:
 energy loss
-momentum smearing
- -->
+momentum smearing -->
           <supertype> <XMI.reference target="S.101008"/> </supertype>
           <!-- supertype is: 2. What is the incidence
 of other detectors on
@@ -3667,6 +3470,1499 @@ resolution -->
             </connection>
         </Association>
       </ownedElement>
+      <ownedElement>
+        <Class XMI.id = "S.101042">
+          <name>AliPHOSv0</name>
+          <visibility XMI.value = "public"/>
+          <isAbstract XMI.value="false"/>
+          <isLeaf XMI.value="false"/>
+          <isRoot XMI.value="false"/>
+          <isActive XMI.value = "false"/>
+          <specification> <XMI.reference target="S.100078"/> </specification>
+          <!-- specification is: AliPHOS -->
+          <feature>
+            <Operation XMI.id = "S.101045">
+              <name>AddHit</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102243">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101048">
+              <name>BuildGeometry</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102246">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101082">
+              <name>BuildGeometryforPHOS</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102249">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101085">
+              <name>BuildGeometryforPPSD</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102252">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101051">
+              <name>CreateGeometry</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102255">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101091">
+              <name>CreateGeometryforPHOS</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102258">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101094">
+              <name>CreateGeometryforPPSD</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102261">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101097">
+              <name>Digitize</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102264">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102265">
+              <name>EmcClusters</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102267">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101947"/> </type>
+                  <!-- Type is: RecPointsList* -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102136">
+              <name>GetGeometry</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102270">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101957"/> </type>
+                  <!-- Type is: AliPHOSGeometry* -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101106">
+              <name>FinishEvent</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102273">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101114">
+              <name>Init</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102276">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101117">
+              <name>IsVersion</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102279">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101118"/> </type>
+                  <!-- Type is: Int_t -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101121">
+              <name>MakeBranch</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102282">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101124">
+              <name>PpsdClusters</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102285">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101101"/> </type>
+                  <!-- Type is: RecPointsList -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101127">
+              <name>Reconstruction</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102288">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101130">
+              <name>ResetClusters</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102291">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101133">
+              <name>SetReconstructioner</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102294">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101135">
+              <name>StepManager</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102297">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101138">
+              <name>ShowMembers</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102300">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101141">
+              <name>Streamer</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102303">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.101144">
+              <name>TrqackSegments</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102306">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101145"/> </type>
+                  <!-- Type is: TObjArray -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.101946">
+              <name>fEmcClusters</name>
+              <visibility XMI.value = "private"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101947"/> </type>
+              <!-- Type is: RecPointsList* -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.101956">
+              <name>fGeom</name>
+              <visibility XMI.value = "private"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101957"/> </type>
+              <!-- Type is: AliPHOSGeometry* -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.101958">
+              <name>fPpsdClusters</name>
+              <visibility XMI.value = "private"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101947"/> </type>
+              <!-- Type is: RecPointsList* -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.101959">
+              <name>fReconstructioner</name>
+              <visibility XMI.value = "private"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101960"/> </type>
+              <!-- Type is: AliPHOSReconstructioner* -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.101961">
+              <name>fTmpHits</name>
+              <visibility XMI.value = "private"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101962"/> </type>
+              <!-- Type is: TClonesArray* -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.101963">
+              <name>fTrackSegmentsMaker</name>
+              <visibility XMI.value = "private"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101964"/> </type>
+              <!-- Type is: AliPHOSTrackSegmentMaker* -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.101965">
+              <name>fTrackSegments</name>
+              <visibility XMI.value = "private"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101966"/> </type>
+              <!-- Type is: TObjArray* -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.101150">
+              <name>fNTmpHits</name>
+              <visibility XMI.value = "private"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101118"/> </type>
+              <!-- Type is: Int_t -->
+            </Attribute>
+          </feature>
+        </Class>
+      </ownedElement>
+      <ownedElement>
+        <Association XMI.id="S.101055">
+          <name></name>
+          <visibility XMI.value = "public"/>
+          <isAbstract XMI.value="false"/>
+          <isLeaf XMI.value="false"/>
+          <isRoot XMI.value="false"/>
+            <connection>
+              <AssociationEnd XMI.id = "S.101056">
+                <name>uses</name>
+                <visibility XMI.value = "public"/>
+                <isNavigable XMI.value="false"/>
+                <isOrdered XMI.value="false"/>
+                <aggregation XMI.value="none"/>
+                <multiplicity>1</multiplicity>
+                <changeable XMI.value="none"/>
+                <targetScope XMI.value="instance"/>
+                <type> <XMI.reference target="S.101042"/> </type>
+                <!-- Type is: AliPHOSv0 -->
+              </AssociationEnd>
+            </connection>
+            <connection>
+              <AssociationEnd XMI.id = "S.101057">
+                <name></name>
+                <visibility XMI.value = "public"/>
+                <isNavigable XMI.value="true"/>
+                <isOrdered XMI.value="false"/>
+                <aggregation XMI.value="none"/>
+                <multiplicity>1</multiplicity>
+                <changeable XMI.value="none"/>
+                <targetScope XMI.value="instance"/>
+                <type> <XMI.reference target="S.100094"/> </type>
+                <!-- Type is: AliPHOSGeometry -->
+              </AssociationEnd>
+            </connection>
+        </Association>
+      </ownedElement>
+      <ownedElement>
+        <Association XMI.id="S.101158">
+          <name></name>
+          <visibility XMI.value = "public"/>
+          <isAbstract XMI.value="false"/>
+          <isLeaf XMI.value="false"/>
+          <isRoot XMI.value="false"/>
+            <connection>
+              <AssociationEnd XMI.id = "S.101159">
+                <name>creates</name>
+                <visibility XMI.value = "public"/>
+                <isNavigable XMI.value="false"/>
+                <isOrdered XMI.value="false"/>
+                <aggregation XMI.value="none"/>
+                <multiplicity>1</multiplicity>
+                <changeable XMI.value="none"/>
+                <targetScope XMI.value="instance"/>
+                <type> <XMI.reference target="S.101042"/> </type>
+                <!-- Type is: AliPHOSv0 -->
+              </AssociationEnd>
+            </connection>
+            <connection>
+              <AssociationEnd XMI.id = "S.101160">
+                <name></name>
+                <visibility XMI.value = "public"/>
+                <isNavigable XMI.value="true"/>
+                <isOrdered XMI.value="false"/>
+                <aggregation XMI.value="none"/>
+                <multiplicity>0..*</multiplicity>
+                <changeable XMI.value="none"/>
+                <targetScope XMI.value="instance"/>
+                <type> <XMI.reference target="S.100125"/> </type>
+                <!-- Type is: AliPHOSHit -->
+              </AssociationEnd>
+            </connection>
+        </Association>
+      </ownedElement>
+      <ownedElement>
+        <Association XMI.id="S.101161">
+          <name></name>
+          <visibility XMI.value = "public"/>
+          <isAbstract XMI.value="false"/>
+          <isLeaf XMI.value="false"/>
+          <isRoot XMI.value="false"/>
+            <connection>
+              <AssociationEnd XMI.id = "S.101162">
+                <name>creates</name>
+                <visibility XMI.value = "public"/>
+                <isNavigable XMI.value="false"/>
+                <isOrdered XMI.value="false"/>
+                <aggregation XMI.value="none"/>
+                <multiplicity>1</multiplicity>
+                <changeable XMI.value="none"/>
+                <targetScope XMI.value="instance"/>
+                <type> <XMI.reference target="S.101042"/> </type>
+                <!-- Type is: AliPHOSv0 -->
+              </AssociationEnd>
+            </connection>
+            <connection>
+              <AssociationEnd XMI.id = "S.101163">
+                <name></name>
+                <visibility XMI.value = "public"/>
+                <isNavigable XMI.value="true"/>
+                <isOrdered XMI.value="false"/>
+                <aggregation XMI.value="none"/>
+                <multiplicity>0..*</multiplicity>
+                <changeable XMI.value="none"/>
+                <targetScope XMI.value="instance"/>
+                <type> <XMI.reference target="S.100160"/> </type>
+                <!-- Type is: AliPHOSDigit -->
+              </AssociationEnd>
+            </connection>
+        </Association>
+      </ownedElement>
+      <ownedElement>
+        <Class XMI.id = "S.102526">
+          <name>AliRecPoint</name>
+          <visibility XMI.value = "public"/>
+          <isAbstract XMI.value="false"/>
+          <isLeaf XMI.value="false"/>
+          <isRoot XMI.value="false"/>
+          <isActive XMI.value = "false"/>
+          <feature>
+            <Operation XMI.id = "S.102542">
+              <name>AddDigit</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102675">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102545">
+              <name>AddTrack</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102678">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101218"/> </type>
+                  <!-- Type is: void?? -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102547">
+              <name>GetCovarianceMatrix</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102681">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102550">
+              <name>GetGeom</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102684">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.102532"/> </type>
+                  <!-- Type is: AliGeometry* -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102553">
+              <name>GetGlobalPosition</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102687">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102556">
+              <name>GetDigitsList</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102690">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.102530"/> </type>
+                  <!-- Type is: int* -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102559">
+              <name>GetEnergy</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102693">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101850"/> </type>
+                  <!-- Type is: Float_t -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102562">
+              <name>GetLocalPosition</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102696">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102565">
+              <name>GetDigitsMultiplicity</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102699">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101118"/> </type>
+                  <!-- Type is: Int_t -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102700">
+              <name>GetMaximumDigitMultiplicity</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102702">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101118"/> </type>
+                  <!-- Type is: Int_t -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102573">
+              <name>GetMaximumTrackMultiplicity</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102705">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101118"/> </type>
+                  <!-- Type is: Int_t -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102576">
+              <name>getTracksList</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102708">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.102530"/> </type>
+                  <!-- Type is: int* -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102579">
+              <name>GetTracksMutliplicity</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102711">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101118"/> </type>
+                  <!-- Type is: Int_t -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102582">
+              <name>Print</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102714">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102528">
+              <name>fAmp</name>
+              <visibility XMI.value = "protected"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101850"/> </type>
+              <!-- Type is: Float_t -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102529">
+              <name>fDigitsList</name>
+              <visibility XMI.value = "protected"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.102530"/> </type>
+              <!-- Type is: int* -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102531">
+              <name>fGeom</name>
+              <visibility XMI.value = "protected"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.102532"/> </type>
+              <!-- Type is: AliGeometry* -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102533">
+              <name>fLocPos</name>
+              <visibility XMI.value = "protected"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.102534"/> </type>
+              <!-- Type is: TVector3 -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102535">
+              <name>fLocPosM</name>
+              <visibility XMI.value = "protected"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.102536"/> </type>
+              <!-- Type is: TMatrix* -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102537">
+              <name>fMaxDigit</name>
+              <visibility XMI.value = "protected"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101118"/> </type>
+              <!-- Type is: Int_t -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102538">
+              <name>fMulDigit</name>
+              <visibility XMI.value = "protected"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101118"/> </type>
+              <!-- Type is: Int_t -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102539">
+              <name>fMaxTrack</name>
+              <visibility XMI.value = "protected"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101118"/> </type>
+              <!-- Type is: Int_t -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102540">
+              <name>fMulTrack</name>
+              <visibility XMI.value = "protected"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101118"/> </type>
+              <!-- Type is: Int_t -->
+            </Attribute>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102541">
+              <name>fTracksList</name>
+              <visibility XMI.value = "protected"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.102530"/> </type>
+              <!-- Type is: int* -->
+            </Attribute>
+          </feature>
+        </Class>
+      </ownedElement>
+      <ownedElement>
+        <Class XMI.id = "S.102588">
+          <name>AliPHOSRecPoint</name>
+          <visibility XMI.value = "public"/>
+          <isAbstract XMI.value="false"/>
+          <isLeaf XMI.value="false"/>
+          <isRoot XMI.value="false"/>
+          <isActive XMI.value = "false"/>
+          <feature>
+            <Operation XMI.id = "S.102589">
+              <name>AddDigit</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102591">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102592">
+              <name>Compare</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102594">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102595">
+              <name>GetPHOSMod</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102597">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101118"/> </type>
+                  <!-- Type is: Int_t -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102598">
+              <name>IsEmc</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102600">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101919"/> </type>
+                  <!-- Type is: Bool_t -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102601">
+              <name>IsSortable</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102603">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.101919"/> </type>
+                  <!-- Type is: Bool_t -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102604">
+              <name>Print</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102606">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Attribute XMI.id = "S.102607">
+              <name>fPhosMod</name>
+              <visibility XMI.value = "protected"/>
+              <ownerScope XMI.value="instance"/>
+              <changeable XMI.value="none"/>
+              <multiplicity>1</multiplicity>
+              <targetScope XMI.value="instance"/>
+              <initialValue>
+              </initialValue>
+              <type> <XMI.reference target="S.101118"/> </type>
+              <!-- Type is: Int_t -->
+            </Attribute>
+          </feature>
+        </Class>
+      </ownedElement>
+      <ownedElement>
+        <Generalization XMI.id = "S.102608">
+          <name></name>
+          <visibility XMI.value = "public"/>
+          <discriminator>
+          </discriminator>
+          <subtype> <XMI.reference target="S.102588"/> </subtype>
+          <!-- subtype is: AliPHOSRecPoint -->
+          <supertype> <XMI.reference target="S.102526"/> </supertype>
+          <!-- supertype is: AliRecPoint -->
+        </Generalization>
+      </ownedElement>
+      <ownedElement>
+        <Generalization XMI.id = "S.102609">
+          <name></name>
+          <visibility XMI.value = "public"/>
+          <discriminator>
+          </discriminator>
+          <subtype> <XMI.reference target="S.100334"/> </subtype>
+          <!-- subtype is: AliPHOSEmcRecPoint -->
+          <supertype> <XMI.reference target="S.102588"/> </supertype>
+          <!-- supertype is: AliPHOSRecPoint -->
+        </Generalization>
+      </ownedElement>
+      <ownedElement>
+        <Generalization XMI.id = "S.102610">
+          <name></name>
+          <visibility XMI.value = "public"/>
+          <discriminator>
+          </discriminator>
+          <subtype> <XMI.reference target="S.100336"/> </subtype>
+          <!-- subtype is: AliPHOSPpsdRecPoint -->
+          <supertype> <XMI.reference target="S.102588"/> </supertype>
+          <!-- supertype is: AliPHOSRecPoint -->
+        </Generalization>
+      </ownedElement>
+      <ownedElement>
+        <Class XMI.id = "S.102715">
+          <name>AliPHOSTrackSegmentMaker</name>
+          <visibility XMI.value = "public"/>
+          <isAbstract XMI.value="false"/>
+          <isLeaf XMI.value="false"/>
+          <isRoot XMI.value="false"/>
+          <isActive XMI.value = "false"/>
+          <feature>
+            <Operation XMI.id = "S.102717">
+              <name>MakeTrackSegments</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102719">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+                </Parameter>
+              </parameter>
+            </Operation>
+          </feature>
+          <feature>
+            <Operation XMI.id = "S.102720">
+              <name>SetMaxEmcPpsdDistance</name>
+              <visibility XMI.value = "public"/>
+              <ownerScope XMI.value="instance"/>
+              <isQuery XMI.value="false"/>
+              <concurrency XMI.value="sequential"/>
+              <isPolymorphic XMI.value="false"/>
+              <operationSpecification>
+              </operationSpecification>
+              <parameter>
+                <Parameter XMI.id = "S.102722">
+                  <name>return</name>
+                  <visibility XMI.value = "public"/>
+                  <defaultValue>
+                  </defaultValue>
+                  <kind XMI.value="return"/>
+                  <type> <XMI.reference target="S.100004"/> </type>
+                  <!-- Type is: void -->
+         &