Updated with refactoring of geometry & segmentation classes;
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 22 Nov 2005 14:00:38 +0000 (14:00 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 22 Nov 2005 14:00:38 +0000 (14:00 +0000)
removed SetChambersZ(), SetChambersZToDefault() SetSegmentationModel()
methods

MUON/AliMUON.cxx
MUON/AliMUON.h

index 2e4883c..0d6139e 100644 (file)
 #include "AliMUONRawCluster.h"
 #include "AliMUONTransientDigit.h"
 #include "AliMUONTriggerCircuit.h"
+#include "AliMUONGeometry.h"
+#include "AliMUONGeometryTransformer.h"
 #include "AliMUONGeometryBuilder.h"
 #include "AliMUONCommonGeometryBuilder.h"
 #include "AliMUONVGeometryBuilder.h"   
-#include "AliMUONGeometryDEIndexing.h" 
 #include "AliMUONGeometrySegmentation.h"
 #include "AliMUONDigitizerv2.h"
 #include "AliMUONSDigitizerv1.h"
 #include "AliMUONRawData.h"
-#include "AliMUONFactoryV2.h"
+#include "AliMUONSegmentation.h"
 #include "AliLog.h"
 
 // Defaults parameters for Z positions of chambers
@@ -94,7 +95,7 @@ AliMUON::AliMUON()
     fChambers(0),
     fTriggerCircuits(0),
     fGeometryBuilder(0),
-    fDEIndexing(0),
+    fSegmentation(0),
     fAccCut(kFALSE),
     fAccMin(0.),
     fAccMax(0.),   
@@ -121,7 +122,7 @@ AliMUON::AliMUON(const char *name, const char *title)
     fChambers(0),
     fTriggerCircuits(0),
     fGeometryBuilder(0),
-    fDEIndexing(0),
+    fSegmentation(0),
     fAccCut(kFALSE),
     fAccMin(0.),
     fAccMax(0.),   
@@ -144,17 +145,6 @@ AliMUON::AliMUON(const char *name, const char *title)
   fGeometryBuilder
     ->AddBuilder(new AliMUONCommonGeometryBuilder(this));
 
-  // Define the global transformation:
-  // Transformation from the old ALICE coordinate system to a new one:
-  // x->-x, z->-z 
-  TGeoRotation* rotGlobal 
-    = new TGeoRotation("rotGlobal", 90., 180., 90., 90., 180., 0.);
-  fGeometryBuilder
-    ->SetGlobalTransformation (TGeoCombiTrans(0., 0., 0., rotGlobal));
-
-  // Detection elements indexing
-  fDEIndexing = new AliMUONGeometryDEIndexing();
-
 //
 // Creating List of Chambers
     Int_t ch;
@@ -171,18 +161,8 @@ AliMUON::AliMUON(const char *name, const char *title)
        if (ch < AliMUONConstants::NTrackingCh()) {
          fChambers->AddAt(new AliMUONChamber(ch),ch);
        } else {
-         fChambers->AddAt(new AliMUONChamberTrigger(ch),ch);
+         fChambers->AddAt(new AliMUONChamberTrigger(ch, GetGeometryTransformer()),ch);
        }
-       AliMUONChamber* chamber = (AliMUONChamber*) fChambers->At(ch);
-       //chamber->SetGid(0);
-       // Default values for Z of chambers
-       chamber->SetZ(AliMUONConstants::DefaultChamberZ(ch));
-       //
-       chamber->InitGeo(AliMUONConstants::DefaultChamberZ(ch));
-       //          Set chamber inner and outer radius to default
-       chamber->SetRInner(AliMUONConstants::Dmin(st)/2.);
-       chamber->SetROuter(AliMUONConstants::Dmax(st)/2.);
-       //
       } // Chamber stCH (0, 1) in 
     }     // Station st (0...)
     
@@ -219,7 +199,7 @@ AliMUON::~AliMUON()
   }
   delete fMUONData;
   delete fGeometryBuilder;
-  delete fDEIndexing;
+  delete fSegmentation;
 }
 
 //________________________________________________________________________
@@ -255,6 +235,31 @@ void AliMUON::BuildGeometry()
   
 }
 
+//____________________________________________________________________
+const AliMUONGeometry*  AliMUON::GetGeometry() const
+{
+// Return geometry parametrisation
+
+  if ( !fGeometryBuilder) {
+    AliWarningStream() << "GeometryBuilder not defined." << std::endl;
+    return 0;
+  }
+  
+  return fGeometryBuilder->GetGeometry();
+}   
+
+//____________________________________________________________________
+const AliMUONGeometryTransformer*  AliMUON::GetGeometryTransformer() const
+{
+// Return geometry parametrisation
+
+  const AliMUONGeometry* kGeometry = GetGeometry();
+  
+  if ( !kGeometry) return 0;
+
+  return kGeometry->GetTransformer();
+}   
+
 //__________________________________________________________________
 void  AliMUON::SetTreeAddress()
 {
@@ -272,23 +277,6 @@ void  AliMUON::SetTreeAddress()
   fHits = GetMUONData()->Hits(); // Added by Ivana to use the methods FisrtHit, NextHit of AliDetector    
 }
 
-//___________________________________________
-void AliMUON::SetChambersZ(const Float_t *Z)
-{
-  // Set Z values for all chambers (tracking and trigger)
-  // from the array pointed to by "Z"
-    for (Int_t ch = 0; ch < AliMUONConstants::NCh(); ch++)
-       ((AliMUONChamber*) fChambers->At(ch))->SetZ(Z[ch]);
-    return;
-}
-//_________________________________________________________________
-void AliMUON::SetChambersZToDefault()
-{
-  // Set Z values for all chambers (tracking and trigger)
-  // to default values
-  SetChambersZ(AliMUONConstants::DefaultChamberZ());
-  return;
-}
 //_________________________________________________________________
 void AliMUON::SetChargeSlope(Int_t id, Float_t p1)
 {
@@ -388,14 +376,7 @@ Float_t  AliMUON::GetMaxDestepAlu() const
  
    fGeometryBuilder->SetAlign(align);
 }   
-    
-//____________________________________________________________________
-void   AliMUON::SetSegmentationModel(Int_t id, Int_t isec, AliMUONGeometrySegmentation*  segmentation)
-{
-// Set the segmentation for chamber id cathode isec
-    ((AliMUONChamber*) fChambers->At(id))->SetSegmentationModel(isec, segmentation);
 
-}
 //____________________________________________________________________
 void   AliMUON::SetResponseModel(Int_t id, AliMUONResponse *response)
 {
index 4e63afa..b202c19 100644 (file)
@@ -25,15 +25,16 @@ class TFile;
 class TTree;
 
 class AliLoader;
-class AliMUONGeometrySegmentation;
 class AliMUONTriggerCircuit;
 class AliMUONData;
 class AliMUONResponse;
+class AliMUONSegmentation;
 class AliMUONHit;
 class AliMUONRawCluster;
+class AliMUONGeometry;
+class AliMUONGeometryTransformer;
 class AliMUONGeometryBuilder;
 class AliMUONVGeometryBuilder;
-class AliMUONGeometryDEIndexing;
 class AliESD;
 
 class AliMUON : public  AliDetector 
@@ -43,11 +44,17 @@ class AliMUON : public  AliDetector
     AliMUON(const char *name, const char *title);
     virtual       ~AliMUON();
    
+    // Geometry
     void           AddGeometryBuilder(AliMUONVGeometryBuilder* geomBuilder);
     virtual void   BuildGeometry();
-    AliMUONData*   GetMUONData() {return fMUONData;}
-    AliMUONGeometryBuilder*  GetGeometryBuilder() {return fGeometryBuilder;}
     virtual Int_t  IsVersion()   const {return 0;}
+    
+    AliMUONGeometryBuilder*            GetGeometryBuilder() const {return fGeometryBuilder;}
+    const AliMUONGeometryTransformer*  GetGeometryTransformer() const;
+    AliMUONSegmentation*               GetSegmentation() const    { return fSegmentation; }
+
+    // MUONData   
+    AliMUONData*   GetMUONData() {return fMUONData;}
 
     // MUONLoader definition
     virtual AliLoader* MakeLoader(const char* topfoldername); //builds standard getter (AliLoader type)
@@ -69,20 +76,12 @@ class AliMUON : public  AliDetector
 
     // Configuration Methods (per station id)
     //
-    // Set Chamber Segmentation Parameters
-    // id refers to the station and isec to the cathode plane
-    // Set Z values for all chambers
-    virtual void SetChambersZ(const Float_t *Z);
-    virtual void SetChambersZToDefault(void);
     // Set Signal Generation Parameters
     virtual void   SetSigmaIntegration(Int_t id, Float_t p1);
     virtual void   SetChargeSlope(Int_t id, Float_t p1);
     virtual void   SetChargeSpread(Int_t id, Float_t p1, Float_t p2);
     virtual void   SetMaxAdc(Int_t id, Int_t p1);
-    // Set Segmentation and Response Model
-    virtual void   SetSegmentationModel(Int_t id, Int_t isec,
-                                       AliMUONGeometrySegmentation* segmentation);
-
+    // Set Response Model
     virtual void   SetResponseModel(Int_t id, AliMUONResponse *response);
 
     // Set Stepping Parameters
@@ -116,6 +115,7 @@ class AliMUON : public  AliDetector
     AliMUON(const AliMUON& rMUON);
     AliMUON& operator = (const AliMUON& rhs);
 
+    const AliMUONGeometry* GetGeometry() const;
 
     Int_t                 fNCh;                // Number of chambers   
     Int_t                 fNTrackingCh;        // Number of tracking chambers*
@@ -123,8 +123,8 @@ class AliMUON : public  AliDetector
     Int_t                 fSplitLevel;         // Splitlevel when making branches in outfiles.
     TObjArray*            fChambers;           // List of Tracking Chambers
     TObjArray*            fTriggerCircuits;    // List of Trigger Circuits
-    AliMUONGeometryBuilder*     fGeometryBuilder; // Geometry builder 
-    AliMUONGeometryDEIndexing*  fDEIndexing;   // Geometry DE indexing 
+    AliMUONGeometryBuilder*  fGeometryBuilder; // Geometry builder 
+    AliMUONSegmentation*  fSegmentation;       // New segmentation 
    
     //
     Bool_t   fAccCut;          //Transport acceptance cut