#include "AliPHOS.h"
#include "AliMC.h"
+//#include "TGeant3.h"
#include "AliRun.h"
ClassImp(AliPHOS)
// 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.) ;
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.) ;
+
+
+
+
}
// --- Standard library ---
-#include "iostream.h"
+#include <iostream>
// --- AliRoot header files ---
//____________________________________________________________________________
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() ;
// copies the digits with energy above thershold and sorts the list
// according to increasing Id number
-
AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ;
Int_t relid[4] ;
//____________________________________________________________________________
Bool_t AliPHOSClusterizerv1::IsInEmc(AliPHOSDigit * digit)
{
- Bool_t rv = kFALSE ;
+ Bool_t rv = kFALSE ;
AliPHOSGeometry * geom = AliPHOSGeometry::GetInstance() ;
//____________________________________________________________________________
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
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
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;}
//////////////////////////////////////////////////////////////////////////////
// --- ROOT system ---
-
+#include "TPad.h"
+#include "TH2.h"
#include "TMath.h"
+#include "TCanvas.h"
// --- Standard library ---
-#include "iostream.h"
+#include <iostream>
// --- AliRoot header files ---
fLocPos.SetX(1000000.) ; //Local position should be evaluated
}
-// //____________________________________________________________________________
-// AliPHOSEmcRecPoint::~AliPHOSEmcRecPoint()
-// {
-// // dtor
-// }
+//____________________________________________________________________________
+AliPHOSEmcRecPoint::~AliPHOSEmcRecPoint()
+{
+ // dtor
+}
//____________________________________________________________________________
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 ;
}
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()
{
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 ?
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 ;
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 ;
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") ;
// 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:
// --- Standard library ---
-#include <iostream.h>
-#include "assert.h"
+#include <iostream>
+#include <cassert>
// --- AliRoot header files ---
}
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)
fAvalancheGap = 0.01 ;
fCathodeThickness = 0.0009 ;
fCompositeThickness = 0.3 ;
- fConversionGap = 0.3 ;
+ fConversionGap = 0.6 ;
fLeadConverterThickness = 0.56 ;
fLeadToMicro2Gap = 0.1 ;
fLidThickness = 0.2 ;
//____________________________________________________________________________
AliPHOSGeometry * AliPHOSGeometry::GetInstance()
{
- assert(fGeom!=0) ;
return (AliPHOSGeometry *) fGeom ;
}
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) ;
#include "AliGeometry.h"
#include "AliPHOSRecPoint.h"
+static const TString kDegre("deg") ;
+static const TString kRadian("rad") ;
+
class AliPHOSGeometry : public AliGeometry {
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
// --- AliRoot header files ---
#include "AliHit.h"
-#include <iostream.h>
+
+// --- Standard library ---
+
+#include <iostream>
class AliPHOSHit : public AliHit {
//////////////////////////////////////////////////////////////////////////////
// --- ROOT system ---
-
+#include "TPad.h"
// --- Standard library ---
-#include <iostream.h>
+#include <iostream>
+#include <cassert>
// --- AliRoot header files ---
//____________________________________________________________________________
AliPHOSPpsdRecPoint::~AliPHOSPpsdRecPoint(void) // dtor
{
- delete fDigitsList ;
+ //dtor
}
//____________________________________________________________________________
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 ;
}
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)
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 ;
}
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) ;
//////////////////////////////////////////////////////////////////////////////
// --- ROOT system ---
+#include "TPad.h"
// --- Standard library ---
+#include <iostream>
+#include <cstdio>
// --- AliRoot header files ---
#include "AliPHOSDigit.h"
#include "AliPHOSRecPoint.h"
+
+
ClassImp(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()
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,"") ;
+}
// --- ROOT system ---
+#include "TMarker.h"
+#include "TGraph.h"
+#include "TPaveText.h"
+
// --- Standard library ---
-#include "assert.h"
+#include <cassert>
// --- AliRoot header files ---
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)
};
//____________________________________________________________________________
AliPHOSReconstructioner::AliPHOSReconstructioner(AliPHOSClusterizer & Clusterizer, AliPHOSTrackSegmentMaker & Tracker)
{
- fClusterizer = &Clusterizer ;
+ fClusterizer = &Clusterizer ;
fTrackSegmentMaker = &Tracker ;
}
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;
}
private:
- AliPHOSClusterizer * fClusterizer ; // Method of clusterization
-
- AliPHOSTrackSegmentMaker * fTrackSegmentMaker ; //
+ AliPHOSClusterizer * fClusterizer ; // Method for clusterization
+ AliPHOSTrackSegmentMaker * fTrackSegmentMaker ; // Method for track segments finding
public:
// --- ROOT system ---
#include "TVector3.h"
+#include "TPad.h"
// --- Standard library ---
-#include "iostream.h"
+#include <iostream>
// --- AliRoot header files ---
// fPpsdLow.Delete() ;
}
+//____________________________________________________________________________
+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()
{
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()
{
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 ; }
// --- Standard library ---
-#include "iostream.h"
+#include <iostream>
// --- AliRoot header files ---
**************************************************************************/
//_________________________________________________________________________
-// 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-- ;
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
AliPHOSPpsdRecPoint * ppsdLow ;
AliPHOSPpsdRecPoint * ppsdUp ;
+ AliPHOSRecPoint * NullPointer = 0 ;
+
while ( (linkLow = (AliPHOSLink *)nextLow() ) ){
emc = (AliPHOSEmcRecPoint *) EmcRecPoints->At(linkLow->GetEmc()) ;
ppsdLow = (AliPHOSPpsdRecPoint *) PpsdRecPointsLow->At(linkLow->GetPpsd()) ;
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
}
nextEmc.Reset() ;
while( (emc = (AliPHOSEmcRecPoint*)nextEmc()) ){ //to create pairs if no PpsdLow
- ppsdLow = NULL ;
- ppsdUp = NULL ;
+ ppsdLow = 0 ;
+ ppsdUp = 0 ;
while ( (linkUp = (AliPHOSLink *)nextUp() ) ){
trsl->Add(subtr) ;
if(ppsdUp)
- PpsdRecPointsUp->RemoveAt(linkUp->GetPpsd()) ;
-
+ PpsdRecPointsUp->AddAt(NullPointer,linkUp->GetPpsd()) ;
}
}
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);
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) ;
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 ;
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) ;
}
}
//______________________________________________________________________________
-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 ;
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++ ;
}
}
#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
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:
// --- 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 ---
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
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)
{
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
// 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 ;
}
//____________________________________________________________________________
//___________________________________________________________________________
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 ;
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 ;
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;
}
//____________________________________________________________________________
-#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 //
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
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
+++ /dev/null
-/**************************************************************************
- * 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.
-}
-
+++ /dev/null
-#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
-
+++ /dev/null
-/**************************************************************************
- * 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;
-
-}
-
-//////////////////////////////////////////////////////////////////////////////
+++ /dev/null
-#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
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
<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"
<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"
<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 -->
- <feature>
- <Operation XMI.id = "S.100082">
- <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.100083">
- <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.100084">
- <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.100085">
- <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>
+ <realization> <XMI.reference target="S.101042"/> </realization>
+ <!-- realizations is: AliPHOSv0 -->
<feature>
- <Operation XMI.id = "S.100086">
- <name>CreateGeometry</name>
+ <Operation XMI.id = "S.101036">
+ <name>CreateMaterials</name>
<visibility XMI.value = "public"/>
<ownerScope XMI.value="instance"/>
<isQuery XMI.value="false"/>
<operationSpecification>
</operationSpecification>
<parameter>
- <Parameter XMI.id = "S.100087">
+ <Parameter XMI.id = "S.101037">
<name>return</name>
<visibility XMI.value = "public"/>
<defaultValue>
</Operation>
</feature>
<feature>
- <Operation XMI.id = "S.100088">
- <name>FinishEvent</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.100089">
+ <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 -->
+ <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>
</feature>
</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>
<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>
<!-- 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"/>
+ <concurrency XMI.value="sequential"/>
+ <isPolymorphic XMI.value="false"/>
+ <operationSpecification>
+ </operationSpecification>
+ <parameter>
+ <Parameter XMI.id = "S.102333">
+ <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.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"/>
<operationSpecification>
</operationSpecification>
<parameter>
- <Parameter XMI.id = "S.100187">
+ <Parameter XMI.id = "S.102339">
<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.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>
+ <Interface XMI.id = "S.100193">
+ <name>AliPHOSClusterizer</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"/>
- <isAbstract XMI.value="true"/>
+ <isAbstract XMI.value="true"/>
<isLeaf XMI.value="false"/>
<isRoot XMI.value="false"/>
<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>
<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>
</parameter>
</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>
<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">
+ <Association XMI.id="S.100313">
<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>
+ <AssociationEnd XMI.id = "S.100314">
+ <name>use</name>
<visibility XMI.value = "public"/>
<isNavigable XMI.value="false"/>
<isOrdered XMI.value="false"/>
<multiplicity>1</multiplicity>
<changeable XMI.value="none"/>
<targetScope XMI.value="instance"/>
- <type> <XMI.reference target="S.100080"/> </type>
- <!-- Type is: AliPHOSv4 -->
+ <type> <XMI.reference target="S.100198"/> </type>
+ <!-- Type is: AliPHOSClusterizerv1 -->
</AssociationEnd>
</connection>
<connection>
- <AssociationEnd XMI.id = "S.100309">
+ <AssociationEnd XMI.id = "S.100315">
<name></name>
<visibility XMI.value = "public"/>
<isNavigable XMI.value="true"/>
<isOrdered XMI.value="false"/>
<aggregation XMI.value="none"/>
- <multiplicity>0..*</multiplicity>
+ <multiplicity>1</multiplicity>
<changeable XMI.value="none"/>
<targetScope XMI.value="instance"/>
- <type> <XMI.reference target="S.100160"/> </type>
- <!-- Type is: AliPHOSDigit -->
+ <type> <XMI.reference target="S.100094"/> </type>
+ <!-- Type is: AliPHOSGeometry -->
</AssociationEnd>
</connection>
</Association>
</ownedElement>
<ownedElement>
- <Association XMI.id="S.100313">
- <name></name>
+ <Class XMI.id = "S.100334">
+ <name>AliPHOSEmcRecPoint</name>
<visibility XMI.value = "public"/>
<isAbstract XMI.value="false"/>
<isLeaf XMI.value="false"/>
<isRoot XMI.value="false"/>
- <connection>
- <AssociationEnd XMI.id = "S.100314">
- <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.100198"/> </type>
- <!-- Type is: AliPHOSClusterizerv1 -->
- </AssociationEnd>
- </connection>
- <connection>
- <AssociationEnd XMI.id = "S.100315">
- <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>
+ <isActive XMI.value = "false"/>
+ </Class>
</ownedElement>
<ownedElement>
- <Interface XMI.id = "S.100322">
- <name>AliPHOSCluster</name>
+ <Class XMI.id = "S.100336">
+ <name>AliPHOSPpsdRecPoint</name>
<visibility XMI.value = "public"/>
- <isAbstract XMI.value="true"/>
+ <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"/>
- <realization> <XMI.reference target="S.100334"/> </realization>
- <realization> <XMI.reference target="S.100336"/> </realization>
- <!-- realizations is: AliPHOSEmcCluster -->
- <!-- realizations is: AliPHOSPpsdCluster -->
+ <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>
+ <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.100326">
+ <Parameter XMI.id = "S.102728">
<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.100004"/> </type>
+ <!-- Type is: void -->
</Parameter>
</parameter>
</Operation>
</feature>
<feature>
- <Operation XMI.id = "S.100327">
- <name>GetDigitsList</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.100328">
+ <Parameter XMI.id = "S.102731">
<name>return</name>
<visibility XMI.value = "public"/>
<defaultValue>
</Operation>
</feature>
<feature>
- <Operation XMI.id = "S.100329">
- <name>Print</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.100330">
+ <Parameter XMI.id = "S.102734">
<name>return</name>
<visibility XMI.value = "public"/>
<defaultValue>
</Operation>
</feature>
<feature>
- <Operation XMI.id = "S.100562">
- <name>GetRelPosition</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.100563">
+ <Parameter XMI.id = "S.102737">
<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.102738">
+ <name>MakeTrackSegments</name>
<visibility XMI.value = "public"/>
<ownerScope XMI.value="instance"/>
<isQuery XMI.value="false"/>
<operationSpecification>
</operationSpecification>
<parameter>
- <Parameter XMI.id = "S.100536">
+ <Parameter XMI.id = "S.102740">
<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>
- <Operation XMI.id = "S.100537">
- <name>Compare</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.100538">
+ <Parameter XMI.id = "S.102743">
<name>return</name>
<visibility XMI.value = "public"/>
<defaultValue>
</Operation>
</feature>
<feature>
- <Operation XMI.id = "S.100539">
- <name>GetAbsPosition</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.100540">
+ <Parameter XMI.id = "S.102746">
<name>return</name>
<visibility XMI.value = "public"/>
<defaultValue>
</Operation>
</feature>
<feature>
- <Operation XMI.id = "S.100541">
- <name>GetDispersion</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.100542">
+ <Parameter XMI.id = "S.102749">
<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.100543">
- <name>GetElipsAxis</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.100544">
+ <Parameter XMI.id = "S.102752">
<name>return</name>
<visibility XMI.value = "public"/>
<defaultValue>
</Operation>
</feature>
<feature>
- <Operation XMI.id = "S.100545">
- <name>GetMaximalEnergy</name>
+ <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: 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.102804">
+ <name>GetDistannceInPHOSPlane</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.102806">
<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.100547">
- <name>GetMultiplicityAtLevel</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.100548">
+ <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>
- <Operation XMI.id = "S.100549">
- <name>GetNumberOfLocalMaxima</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.100550">
+ <Parameter XMI.id = "S.102812">
<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.101919"/> </type>
+ <!-- Type is: Bool_t -->
</Parameter>
</parameter>
</Operation>
</feature>
<feature>
- <Operation XMI.id = "S.100551">
- <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.100552">
+ <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.100553">
- <name>GetTotalEnergy</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.100554">
+ <Parameter XMI.id = "S.102818">
<name>return</name>
<visibility XMI.value = "public"/>
<defaultValue>
</Operation>
</feature>
<feature>
- <Operation XMI.id = "S.100555">
- <name>SetLocalMaxCut</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.100556">
+ <Parameter XMI.id = "S.102821">
<name>return</name>
<visibility XMI.value = "public"/>
<defaultValue>
</Operation>
</feature>
<feature>
- <Operation XMI.id = "S.100557">
- <name>SetLowWeightCut</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.100558">
+ <Parameter XMI.id = "S.102824">
<name>return</name>
<visibility XMI.value = "public"/>
<defaultValue>
</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>
+ <Attribute XMI.id = "S.100692">
+ <name>fCutOnDispersion</name>
<visibility XMI.value = "private"/>
<ownerScope XMI.value="instance"/>
<changeable XMI.value="none"/>
<multiplicity>1</multiplicity>
<targetScope XMI.value="instance"/>
<initialValue>
- 0
+ 1.5
</initialValue>
+ <type> <XMI.reference target="S.101850"/> </type>
+ <!-- Type is: Float_t -->
</Attribute>
</feature>
<feature>
- <Attribute XMI.id = "S.100403">
- <name>fMultiplicity</name>
+ <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.100006"/> </type>
- <!-- Type is: int -->
+ <type> <XMI.reference target="S.102794"/> </type>
+ <!-- Type is: AliPHOSEmcRecPoint* -->
</Attribute>
</feature>
<feature>
- <Attribute XMI.id = "S.100465">
- <name>fDelta</name>
+ <Attribute XMI.id = "S.100696">
+ <name>fPpsdLow</name>
<visibility XMI.value = "private"/>
<ownerScope XMI.value="instance"/>
<changeable XMI.value="none"/>
<multiplicity>1</multiplicity>
<targetScope XMI.value="instance"/>
<initialValue>
- 4.
</initialValue>
+ <type> <XMI.reference target="S.102796"/> </type>
+ <!-- Type is: AliPHOSPpsdRecPoint* -->
</Attribute>
</feature>
<feature>
- <Attribute XMI.id = "S.100481">
- <name>fLocMaxCut</name>
+ <Attribute XMI.id = "S.100698">
+ <name>fPpsdUp</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>
+ <type> <XMI.reference target="S.102798"/> </type>
+ <!-- Type is: AliPHOSAppsdRecPoint* -->
</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>
- <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.100795">
- <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.100560">
- <name>GetRelPosition</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.100798">
- <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.100564">
- <name>GetUp</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.100801">
- <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>
- <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>
- <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.100568">
- <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>
- </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>
- <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.100684">
- <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>
- <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"/>
- <ownerScope XMI.value="instance"/>
- <changeable XMI.value="none"/>
- <multiplicity>1</multiplicity>
- <targetScope XMI.value="instance"/>
- <initialValue>
- 1.5
- </initialValue>
- </Attribute>
- </feature>
- <feature>
- <Attribute XMI.id = "S.100694">
- <name>fEmcCluster</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.100696">
- <name>fPpsdLow</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.100698">
- <name>fPpsdUp</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.100689">
- <name></name>
+ <Association XMI.id="S.100689">
+ <name></name>
<visibility XMI.value = "public"/>
<isAbstract XMI.value="false"/>
<isLeaf XMI.value="false"/>
<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>
</connection>
</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"/>
<discriminator>
</discriminator>
- <stereotype> <XMI.reference target="S.100348" /> </stereotype>
<subtype> <XMI.reference target="S.101022"/> </subtype>
<!-- subtype is: Photon:
conversion probability
<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"/>
<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
</connection>
</Association>
</ownedElement>
- </Model>
- <Class XMI.id = "S.100024">
- <name>Stack</name>
- <visibility XMI.value = "public"/>
- <isAbstract XMI.value="false"/>
- <isLeaf XMI.value="false"/>
- <isRoot XMI.value="false"/>
- <isActive XMI.value = "false"/>
- </Class>
- <DataType XMI.id = "S.100007">
- <name>boolean</name>
+ <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"/>
+ &n