Changed the defaults.
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 2 Mar 2006 16:47:58 +0000 (16:47 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 2 Mar 2006 16:47:58 +0000 (16:47 +0000)
Can now use a very compact ctor which takes care of geometry builders
(see ResetGeometryBuilder comments to use the old behavior).
The RawWriter is now a data member to avoid recreating it at each event.
(Laurent)

MUON/AliMUON.cxx
MUON/AliMUON.h

index e02164e..937d3bd 100644 (file)
 #include "AliMUONSDigitizerV2.h"
 #include "AliMUONDigitizerV3.h"
 
+#include "AliMUONSt1GeometryBuilderV2.h"
+#include "AliMUONSt2GeometryBuilderV2.h"
+#include "AliMUONSlatGeometryBuilder.h"
+#include "AliMUONTriggerGeometryBuilder.h"
+
 // Defaults parameters for Z positions of chambers
 // taken from values for "stations" in AliMUON::AliMUON
 //     const Float_t zch[7]={528, 690., 975., 1249., 1449., 1610, 1710.};
@@ -110,7 +115,8 @@ AliMUON::AliMUON()
     fCurIterPad(0),
     fTriggerScalerEvent(kFALSE),
     fSDigitizerType(""),
-    fDigitizerType("")
+    fDigitizerType(""),
+  fRawWriter(0x0)
 {
 // Default Constructor
 //
@@ -142,7 +148,8 @@ AliMUON::AliMUON(const char *name, const char *title,
     fCurIterPad(0),
          fTriggerScalerEvent(kFALSE),
     fSDigitizerType(sDigitizerClassName),
-    fDigitizerType(digitizerClassName)
+    fDigitizerType(digitizerClassName),
+  fRawWriter(0x0)
 {
        AliDebug(1,Form("ctor this=%p",this));
   fIshunt =  0;
@@ -156,8 +163,17 @@ AliMUON::AliMUON(const char *name, const char *title,
   fGeometryBuilder
     ->AddBuilder(new AliMUONCommonGeometryBuilder(this));
 
-//
-// Creating List of Chambers
+  // By default, add also all the needed geometry builders.
+  // If you want to change this from outside, please use ResetGeometryBuilder
+  // method, followed by AddGeometryBuilder ones.
+
+  AddGeometryBuilder(new AliMUONSt1GeometryBuilderV2(this));
+  AddGeometryBuilder(new AliMUONSt2GeometryBuilderV2(this));
+  AddGeometryBuilder(new AliMUONSlatGeometryBuilder(this));
+  AddGeometryBuilder(new AliMUONTriggerGeometryBuilder(this));
+  
+  //
+  // Creating List of Chambers
     Int_t ch;
     fChambers = new TObjArray(AliMUONConstants::NCh());
 
@@ -211,6 +227,7 @@ AliMUON::~AliMUON()
   delete fMUONData;
   delete fGeometryBuilder;
   delete fSegmentation;
+  delete fRawWriter;
 }
 
 //________________________________________________________________________
@@ -492,10 +509,19 @@ AliMUON::DigitizerType() const
 void AliMUON::Digits2Raw()
 {
   // convert digits of the current event to raw data
-  AliMUONRawWriter rawData(fLoader,fMUONData);
-
-  if (fTriggerScalerEvent == kTRUE) rawData.SetScalerEvent();
-  if (!rawData.Digits2Raw()) AliInfo("pb writting raw data");
+  if (!fRawWriter)
+  {
+    fRawWriter = new AliMUONRawWriter(fMUONData);
+    if (fTriggerScalerEvent == kTRUE) 
+    {
+      fRawWriter->SetScalerEvent();
+    }
+  }
+  
+  if (!fRawWriter->Digits2Raw()) 
+  {
+    AliError("pb writting raw data");
+  }
 }
 
 //_______________________________________________________________________
@@ -532,5 +558,18 @@ AliMUONRawCluster *AliMUON::RawCluster(Int_t ichamber, Int_t icathod, Int_t iclu
     
     return  mRaw;
 }
-//________________________________________________________________________
 
+//________________________________________________________________________
+void
+AliMUON::ResetGeometryBuilder()
+{
+  // Only to be used by "experts" wanting to change the geometry builders
+  // to be used. 
+  // As the ctor of AliMUON now defines a default geometrybuilder, this
+  // ResetGeometryBuilder() must be called prior to call the 
+  // AddGeometryBuilder()
+  delete fGeometryBuilder;
+  fGeometryBuilder = new AliMUONGeometryBuilder(this);
+  fGeometryBuilder
+    ->AddBuilder(new AliMUONCommonGeometryBuilder(this));
+}
index fbe3dd1..c77ba4e 100644 (file)
@@ -36,6 +36,7 @@ class AliMUONRawCluster;
 class AliMUONGeometry;
 class AliMUONGeometryTransformer;
 class AliMUONGeometryBuilder;
+class AliMUONRawWriter;
 class AliMUONVGeometryBuilder;
 class AliESD;
 
@@ -43,13 +44,15 @@ class AliMUON : public  AliDetector
 {
   public:
     AliMUON();
-    AliMUON(const char *name, const char *title,
-            const char* sDigitizerType="sdigitizer:default",
-            const char* digitizerType="digitizer:default");
-    virtual       ~AliMUON();
+    AliMUON(const char* name, const char *title="FactoryV4",
+            const char* sDigitizerType="sdigitizer:AliMUONSDigitizerV2",
+            const char* digitizerType="digitizer:NewDigitizerOldTrigger");
+    virtual ~AliMUON();
    
     // Geometry
-    void           AddGeometryBuilder(AliMUONVGeometryBuilder* geomBuilder);
+    void AddGeometryBuilder(AliMUONVGeometryBuilder* geomBuilder);
+    void ResetGeometryBuilder();
+    
     virtual void   BuildGeometry();
     virtual Int_t  IsVersion()   const {return 0;}
     
@@ -162,7 +165,9 @@ class AliMUON : public  AliDetector
     TString fSDigitizerType; // Class to use for SDigitizer
     TString fDigitizerType; // Class to use for Digitizer
     
-    ClassDef(AliMUON,11)  // MUON Detector base class
+    AliMUONRawWriter* fRawWriter; //!
+    
+    ClassDef(AliMUON,12)  // MUON Detector base class
 };
 #endif