]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONResponseTrigger.cxx
Introduction of AliTRDLeastSquare
[u/mrichter/AliRoot.git] / MUON / AliMUONResponseTrigger.cxx
index 72af7cb0456314a54eb9aec8d53c4a1e8cfcb2ec..c46d286ac26dffc958e10afb79137afd6390924f 100644 (file)
 
 /* $Id$ */
 
-// -------------------------------
+
+//-----------------------------------------------------------------------------
 // Class AliMUONResponseTrigger
 // -------------------------------
 // Implementation 
 // of RPC response
+//-----------------------------------------------------------------------------
 
 
 #include "AliMUONResponseTrigger.h"
@@ -27,9 +29,8 @@
 #include "AliMUONDigit.h"
 #include "AliMUONGeometryTransformer.h"
 #include "AliMUONHit.h"
-#include "AliMUONSegmentation.h"
-#include "AliMUONTriggerSegmentation.h"
 #include "AliMUONConstants.h"
+#include "AliMUONTriggerEfficiencyCells.h"
 
 #include "AliMpPad.h"
 #include "AliMpCathodType.h"
@@ -64,17 +65,12 @@ namespace
     const AliMUONGeometryTransformer* transformer = muon()->GetGeometryTransformer();
     transformer->Global2Local(detElemId,xg,yg,zg,xl,yl,zl);
   }
-
-  AliMUONSegmentation* Segmentation()
-  {
-    static AliMUONSegmentation* segmentation = muon()->GetSegmentation();
-    return segmentation;
-  }
 }
 
 //------------------------------------------------------------------   
 AliMUONResponseTrigger::AliMUONResponseTrigger()
-  : AliMUONResponse()
+  : AliMUONResponse(),
+    fTriggerEfficiency(0x0)
 {
 /// Default constructor
 }
@@ -108,7 +104,9 @@ AliMUONResponseTrigger::DisIntegrate(const AliMUONHit& hit, TList& digits)
   {
     twentyNano=1;
   }
-  
+
+  Bool_t isTrig[2]={kTRUE,kTRUE};
+
   for ( Int_t cath = AliMp::kCath0; cath <= AliMp::kCath1; ++cath )
   {
     const AliMpVSegmentation* seg 
@@ -130,46 +128,43 @@ AliMUONResponseTrigger::DisIntegrate(const AliMUONHit& hit, TList& digits)
                       xhit,yhit,x,y,z,ix,iy));
       continue;
     }
-    AliMUONDigit* d = new AliMUONDigit;
-    d->SetDetElemId(detElemId);
-/* pc 09/02/06 no need for that anymore : trigger is in local numbering
-
-    //FIXME: >> the following code to get the ixGlo and iyGlo is a bad hack 
-    // because trigger has not yet switched to local numbering of its indices !
-    // We should be able to use directly the (local) ix,iy from the pad !
-    const AliMUONTriggerSegmentationV2* old = 
-      dynamic_cast<const AliMUONTriggerSegmentationV2*>
-        (Segmentation()->GetDESegmentation(detElemId,cath));
-    if ( !old )
-    {
-      AliFatal("Got a wrong TriggerSegmentation object! Check that!");
+    AliMUONDigit* d = new AliMUONDigit(detElemId,pad.GetLocation(0).GetFirst(),
+                                       pad.GetLocation(0).GetSecond(),cath);
+    d->SetPadXY(ix,iy);
+
+    //FIXME : a trigger digit can have several locations. 
+    //this is not currently supported by the digit class. Change that or not ?
+    d->SetCharge(twentyNano);
+
+    if(fTriggerEfficiency){
+      if(cath==0){
+       Int_t nboard = pad.GetLocation(0).GetFirst();
+       fTriggerEfficiency->IsTriggered(detElemId, nboard, 
+                                       isTrig[0], isTrig[1]);
+      }
+      if(!isTrig[cath]) continue;
     }
-    Int_t ixGlo;
-    Int_t iyGlo;
-    old->ILoc2IGlo(ix,iy,ixGlo,iyGlo);
-    if ( xhit < 0 ) ixGlo = -ixGlo;
-    // << end of bad hack.
-    d->SetPadX(ixGlo);
-    d->SetPadY(iyGlo);
-*/
-    d->SetPadX(ix);
-    d->SetPadY(iy);
-
-    d->SetSignal(twentyNano);
-    d->AddPhysicsSignal(d->Signal());
-    d->SetCathode(cath);
+
     digits.Add(d);   
- //   AliDebug(1,Form("Adding digit DE %d Cathode %d (%d,%d) signal %d",
-//                    detElemId,cath,ixGlo,iyGlo,twentyNano));
   }
   
-//  StdoutToAliDebug(1,digits.Print();); 
-//  AliDebug(1,Form("Number of digits for detelem %d track %d : %d",
-//                  hit.DetElemId(),hit.Track(),digits.GetSize()));
-//   
 }
 
 
+//_____________________________________________________________________________
+void
+AliMUONResponseTrigger::InitTriggerEfficiency(AliMUONTriggerEfficiencyCells *triggerEfficiency)
+{
+/// Initialize trigger chamber efficiency (on demand)
 
-
-
+  fTriggerEfficiency = triggerEfficiency;
+  if ( fTriggerEfficiency )
+  {
+    AliDebug(1, "Will apply trigger efficiency");
+  }
+  else
+  {
+    AliFatal("I was requested to apply trigger efficiency, but I could "
+            "not get it !");
+  }
+}