]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUON.cxx
Separating run-dependent mapping data from data, which are not
[u/mrichter/AliRoot.git] / MUON / AliMUON.cxx
index 395e1cbdccaf25ccf4830e51119cc48cfd13d54e..3cf30d3cd866acbb6d6484ce3f66925168cb4cbc 100644 (file)
 
 //#include "AliHeader.h"
 #include "AliLoader.h"
+#include "AliCDBManager.h"
 #include "AliRunDigitizer.h"
 #include "AliMC.h"
-#include "AliRun.h"    
+#include "AliRun.h"
+#include "AliRawDataHeaderSim.h"
 #include "AliMUON.h"
 #include "AliMUONChamberTrigger.h"
 #include "AliMUONConstants.h"
@@ -67,6 +69,7 @@
 #include "AliMUONSDigitizerV2.h"
 #include "AliMUONDigitizerV3.h"
 #include "AliMUONDigitMaker.h"
+#include "AliMUONCalibrationData.h"
 
 #include "AliMUONSt1GeometryBuilderV2.h"
 #include "AliMUONSt2GeometryBuilderV2.h"
@@ -121,7 +124,8 @@ AliMUON::AliMUON()
     fRawWriter(0x0),
     fDigitMaker(0x0),
     fHitStore(0x0),
-  fDigitStoreConcreteClassName()
+    fDigitStoreConcreteClassName(),
+    fCalibrationData(0x0)
 {
 /// Default Constructor
     
@@ -155,13 +159,15 @@ AliMUON::AliMUON(const char *name, const char* title)
     fRawWriter(0x0),
     fDigitMaker(new AliMUONDigitMaker),
     fHitStore(0x0),
-  fDigitStoreConcreteClassName("AliMUONDigitStoreV2S")
+    fDigitStoreConcreteClassName("AliMUONDigitStoreV2S"),
+    fCalibrationData()
+
 {
-/// Standard constructor  
+  /// Standard constructor  
   
   AliDebug(1,Form("ctor this=%p",this));
   fIshunt =  0;
-
+  
   //PH SetMarkerColor(kRed);//
     
   // Geometry builder
@@ -170,11 +176,11 @@ AliMUON::AliMUON(const char *name, const char* title)
   // Common geometry definitions
   fGeometryBuilder
     ->AddBuilder(new AliMUONCommonGeometryBuilder(this));
-
+  
   // 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));
@@ -201,7 +207,10 @@ AliMUON::AliMUON(const char *name, const char* title)
        }
       } // Chamber stCH (0, 1) in 
     }     // Station st (0...)
-
+  
+  Int_t runnumber = AliCDBManager::Instance()->GetRun();
+  
+  fCalibrationData = new AliMUONCalibrationData(runnumber);
 }
 
 //____________________________________________________________________
@@ -215,6 +224,7 @@ AliMUON::~AliMUON()
   delete fRawWriter;
   delete fDigitMaker;
   delete fHitStore;
+  delete fCalibrationData;
 }
 
 //_____________________________________________________________________________
@@ -454,7 +464,9 @@ AliDigitizer* AliMUON::CreateDigitizer(AliRunDigitizer* manager) const
 {
 /// Return digitizer
   
-  return new AliMUONDigitizerV3(manager, fDigitizerWithNoise);
+  AliMUONDigitizerV3* digitizer = new AliMUONDigitizerV3(manager, fDigitizerWithNoise);
+  digitizer->SetCalibrationData(fCalibrationData);
+  return digitizer;
 }
 
 //_____________________________________________________________________
@@ -482,6 +494,8 @@ void AliMUON::Digits2Raw()
 {
 /// Convert digits of the current event to raw data
 
+  AliRawDataHeaderSim header;
+
   if (!fRawWriter)
   {
     fRawWriter = new AliMUONRawWriter;
@@ -510,6 +524,7 @@ void AliMUON::Digits2Raw()
   
   treeD->GetEvent(0);
   
+  fRawWriter->SetHeader(header);
   if (!fRawWriter->Digits2Raw(digitStore,triggerStore))
   {
     AliError("pb writting raw data");
@@ -525,7 +540,6 @@ void AliMUON::Digits2Raw()
 Bool_t AliMUON::Raw2SDigits(AliRawReader* rawReader)
 {
 /// Convert  raw data to SDigit
-/// Only for tracking for the moment (ChF) 
 
   fLoader->LoadDigits("READ");
   if (!fLoader->TreeS()) fLoader->MakeSDigitsContainer();
@@ -616,14 +630,54 @@ Int_t  AliMUON::GetDigitizerWithNoise() const
 }  
 
 //____________________________________________________________________
-void AliMUON::SetFastDecoder(Bool_t useFastDecoder)
+Bool_t AliMUON::UsingFastTrackerDecoder() const
+{
+/// Checks to see if we are using the fast decoder for tracker DDL streams.
+
+  if ( ! fDigitMaker ) {
+    AliError("Digit maker is not instantiated.");
+    return kFALSE;
+  }
+  
+  return fDigitMaker->UsingFastTrackerDecoder();
+}
+
+//____________________________________________________________________
+Bool_t AliMUON::UsingFastTriggerDecoder() const
+{
+/// Checks to see if we are using the fast decoder for trigger DDL streams.
+
+  if ( ! fDigitMaker ) {
+    AliError("Digit maker is not instantiated.");
+    return kFALSE;
+  }
+  
+  return fDigitMaker->UsingFastTriggerDecoder();
+}
+
+//____________________________________________________________________
+void AliMUON::SetFastTrackerDecoder(Bool_t useFastDecoder)
 {
 /// Set fast raw data decoder 
 
   if ( ! fDigitMaker ) {
     AliError("Digit maker is not instantiated.");
     return;
-  }   
+  }
+
+  fDigitMaker->SetFastTrackerDecoder(useFastDecoder);
+}
+
+//____________________________________________________________________
+void AliMUON::SetFastTriggerDecoder(Bool_t useFastDecoder)
+{
+/// Set fast raw data decoder 
+
+  if ( ! fDigitMaker ) {
+    AliError("Digit maker is not instantiated.");
+    return;
+  }
+
+  fDigitMaker->SetFastTriggerDecoder(useFastDecoder);
+}
 
-  fDigitMaker->SetFastDecoder(useFastDecoder);
-}