]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONSDigitizerV2.cxx
Introduction of AliTRDLeastSquare
[u/mrichter/AliRoot.git] / MUON / AliMUONSDigitizerV2.cxx
index aaa70baf707c31acad35f68939015fb51281afae..1de726c77006234fb521c7971403bc46f8a5a9e2 100644 (file)
 
 #include "AliMUONSDigitizerV2.h"
 
-#include "AliLog.h"
 #include "AliMUON.h"
 #include "AliMUONChamber.h"
 #include "AliMUONVDigit.h"
-#include "AliMUONDigitStoreV1.h"
 #include "AliMUONHit.h"
+#include "AliMUONVDigitStore.h"
+#include "AliMUONVHitStore.h"
+#include "AliMUONCalibrationData.h"
+#include "AliMUONResponseTrigger.h"
+
+#include "AliMpCDB.h"
 #include "AliMpDEManager.h"
+
+#include "AliLog.h"
+#include "AliCDBManager.h"
 #include "AliLoader.h"
 #include "AliRun.h"
 #include "AliRunLoader.h"
-#include "AliMUONVHitStore.h"
 
-///
+//-----------------------------------------------------------------------------
 /// The sdigitizer performs the transformation from hits (energy deposits by
 /// the transport code) to sdigits (equivalent of charges on pad).
 ///
@@ -45,7 +51,7 @@
 /// Please note that we do *not* merge sdigits after creation, which means
 /// that after sdigitization, a given pad can have several sdigits. This
 /// merging is taken care of later on by the digitizer(V3).
-///
+//-----------------------------------------------------------------------------
 
 ClassImp(AliMUONSDigitizerV2)
 
@@ -56,6 +62,11 @@ AliMUONSDigitizerV2::AliMUONSDigitizerV2()
   ///
   /// ctor.
   ///
+
+  // Load mapping
+  if ( ! AliMpCDB::LoadMpSegmentation() ) {
+    AliFatal("Could not access mapping from OCDB !");
+  }
 }
 
 //_____________________________________________________________________________
@@ -87,11 +98,30 @@ AliMUONSDigitizerV2::Exec(Option_t*)
   loader->LoadHits("READ");
   
   AliMUON* muon = static_cast<AliMUON*>(gAlice->GetModule("MUON"));
-    
+
+  AliMUONCalibrationData *calibrationData = 0x0;
+
+  if(muon->GetTriggerEffCells()){
+    Int_t runnumber = AliCDBManager::Instance()->GetRun();
+    calibrationData = new AliMUONCalibrationData(runnumber);
+    for (Int_t chamber = 10; chamber < 14; chamber++) {
+      ((AliMUONResponseTrigger *) (muon->Chamber(chamber).ResponseModel()))->InitTriggerEfficiency(calibrationData->TriggerEfficiency()); // Init trigger efficiency
+    }
+  }
+  
   Int_t nofEvents(runLoader->GetNumberOfEvents());
   
-  AliMUONVDigitStore* sDigitStore = new AliMUONDigitStoreV1;
+  TString classname = muon->DigitStoreClassName();
+  
+  AliMUONVDigitStore* sDigitStore = AliMUONVDigitStore::Create(classname.Data());
   
+  if (!sDigitStore)
+  {
+    AliFatal(Form("Could not create digitstore of class %s",classname.Data()));
+  }
+  
+  AliInfo(Form("Will use digitStore of type %s",sDigitStore->ClassName()));
+          
   for ( Int_t iEvent = 0; iEvent < nofEvents; ++iEvent ) 
   {    
     // Loop over events.
@@ -184,4 +214,6 @@ AliMUONSDigitizerV2::Exec(Option_t*)
   loader->UnloadHits();  
   
   delete sDigitStore;
+
+  if(calibrationData) delete calibrationData;
 }