First attempt to use systemtically TFolders: the geometry object posts itself to...
[u/mrichter/AliRoot.git] / PHOS / AliPHOSGeometry.cxx
index 0c4656f..35fd78b 100644 (file)
@@ -30,6 +30,8 @@
 
 #include "TVector3.h"
 #include "TRotation.h" 
+#include "TFolder.h" 
+#include "TROOT.h" 
 
 // --- Standard library ---
 
 // --- AliRoot header files ---
 
 #include "AliPHOSGeometry.h"
+#include "AliPHOSEMCAGeometry.h" 
 #include "AliPHOSPpsdRecPoint.h"
 #include "AliConst.h"
 
 ClassImp(AliPHOSGeometry) ;
 
+// these initialisations are needed for a singleton
 AliPHOSGeometry * AliPHOSGeometry::fgGeom = 0 ;
 Bool_t            AliPHOSGeometry::fgInit = kFALSE ;
 
@@ -60,10 +64,12 @@ AliPHOSGeometry::~AliPHOSGeometry(void)
 
 void AliPHOSGeometry::Init(void)
 {
-  // Initializes the PHOS parameters
+  // Initializes the PHOS parameters :
+  //  IHEP is the Protvino CPV (cathode pad chambers)
+  //  GPS2 is the Subatech Pre-Shower (two micromegas sandwiching a passive lead converter)
+  //  MIXT 4 PHOS modules withe the IHEP CPV qnd one PHOS module with the Subatche Pre-Shower
 
-  if ( ((strcmp( fName, "default" )) == 0) || 
-       ((strcmp( fName, "GPS2" ))    == 0) ||
+  if ( ((strcmp( fName, "GPS2" ))    == 0) ||
        ((strcmp( fName, "IHEP" ))    == 0) ||
        ((strcmp( fName, "MIXT" ))    == 0) ) {
     fgInit     = kTRUE ; 
@@ -97,6 +103,14 @@ void AliPHOSGeometry::Init(void)
 
     this->SetPHOSAngles() ; 
     fRotMatrixArray = new TObjArray(fNModules) ; 
+
+    // post the geometry into the appropriate folder
+    //  get the alice folder
+    TFolder * alice = (TFolder*)gROOT->GetListOfBrowsables()->FindObject("YSAlice") ;
+    //  the folder that contains the alarms for PHOS   
+    TFolder * folder = (TFolder*)alice->FindObject("folders/Geometry/PHOS");   
+    folder->SetOwner() ;
+    folder->Add(this) ; 
   }
   else {
     fgInit = kFALSE ; 
@@ -105,7 +119,10 @@ void AliPHOSGeometry::Init(void)
 }
 
 //____________________________________________________________________________
-Float_t AliPHOSGeometry::GetCPVBoxSize(Int_t index)  const { 
+Float_t AliPHOSGeometry::GetCPVBoxSize(Int_t index)  const
+{
+  // returns the coarse dimension CPV depending on the CPV option set
+  
     if      (strcmp(fName,"GPS2") ==0 ) 
       return fGeometryPPSD->GetCPVBoxSize(index);
     else if (strcmp(fName,"IHEP")==0) 
@@ -119,7 +136,8 @@ Float_t AliPHOSGeometry::GetCPVBoxSize(Int_t index)  const {
 //____________________________________________________________________________
 AliPHOSGeometry *  AliPHOSGeometry::GetInstance() 
 { 
-  // Returns the pointer of the unique instance
+  // Returns the pointer of the unique instance; singleton specific
+  
   return (AliPHOSGeometry *) fgGeom ; 
 }
 
@@ -127,6 +145,8 @@ AliPHOSGeometry *  AliPHOSGeometry::GetInstance()
 AliPHOSGeometry *  AliPHOSGeometry::GetInstance(const Text_t* name, const Text_t* title) 
 {
   // Returns the pointer of the unique instance
+  // Creates it with the specified options (name, title) if it does not exist yet
+
   AliPHOSGeometry * rv = 0  ; 
   if ( fgGeom == 0 ) {
     if ( strcmp(name,"") == 0 ) 
@@ -156,7 +176,7 @@ AliPHOSGeometry *  AliPHOSGeometry::GetInstance(const Text_t* name, const Text_t
 //____________________________________________________________________________
 void AliPHOSGeometry::SetPHOSAngles() 
 { 
-  // Calculates the position in ALICE of the PHOS modules
+  // Calculates the position of the PHOS modules in ALICE global coordinate system
   
   Double_t const kRADDEG = 180.0 / kPI ;
   Float_t pphi =  2 * TMath::ATan( GetOuterBoxSize(0)  / ( 2.0 * GetIPtoOuterCoverDistance() ) ) ;
@@ -243,7 +263,7 @@ Bool_t AliPHOSGeometry::AbsToRelNumbering(const Int_t AbsId, Int_t * relid)
 //____________________________________________________________________________  
 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
+  // calculates the angular coverage in theta and phi of one EMC (=PHOS) module
 
  Double_t conv ; 
   if ( opt == Radian() ) 
@@ -277,7 +297,7 @@ void AliPHOSGeometry::EmcModuleCoverage(const Int_t mod, Double_t & tm, Double_t
 //____________________________________________________________________________  
 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
+  // calculates the angular coverage in theta and phi of a single crystal in a EMC(=PHOS) module
 
   Double_t conv ; 
   if ( opt == Radian() ) 
@@ -299,7 +319,7 @@ void AliPHOSGeometry::EmcXtalCoverage(Double_t & theta, Double_t & phi, Option_t
 //____________________________________________________________________________
 void AliPHOSGeometry::GetGlobal(const AliRecPoint* RecPoint, TVector3 & gpos, TMatrix & gmat) const
 {
-  // Calculates the ALICE global coordinates of a RecPoint and the error matrix
+  // Calculates the coordinates of a RecPoint and the error matrix in the ALICE global coordinate system
  
   AliPHOSRecPoint * tmpPHOS = (AliPHOSRecPoint *) RecPoint ;  
   TVector3 localposition ;
@@ -340,7 +360,7 @@ void AliPHOSGeometry::GetGlobal(const AliRecPoint* RecPoint, TVector3 & gpos, TM
 //____________________________________________________________________________
 void AliPHOSGeometry::GetGlobal(const AliRecPoint* RecPoint, TVector3 & gpos) const 
 {
-  // Calculates the ALICE global coordinates of a RecPoint 
+  // Calculates the coordinates of a RecPoint in the ALICE global coordinate system 
 
   AliPHOSRecPoint * tmpPHOS = (AliPHOSRecPoint *) RecPoint ;  
   TVector3 localposition ;
@@ -378,8 +398,8 @@ void AliPHOSGeometry::GetGlobal(const AliRecPoint* RecPoint, TVector3 & gpos) co
 //____________________________________________________________________________
 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
+  // calculates the impact coordinates on PHOS of a neutral particle  
+  // emitted in the direction theta and phi in the ALICE global coordinate system
 
   // searches for the PHOS EMC module
   ModuleNumber = 0 ; 
@@ -459,7 +479,7 @@ Bool_t AliPHOSGeometry::RelToAbsNumbering(const Int_t * relid, Int_t &  AbsId)
 
 void AliPHOSGeometry::RelPosInAlice(const Int_t id, TVector3 & pos ) 
 {
-  // Converts the absolute numbering into the global ALICE coordinates
+  // Converts the absolute numbering into the global ALICE coordinate system
   // It works only for the GPS2 geometry
   
   if (id > 0 && strcmp(fName,"GPS2")==0) {