/* $Id$ */
-// -------------------------------
+
+//-----------------------------------------------------------------------------
// Class AliMUONResponseTrigger
// -------------------------------
// Implementation
// of RPC response
+//-----------------------------------------------------------------------------
#include "AliMUONResponseTrigger.h"
#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"
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
}
{
twentyNano=1;
}
-
+
+ Bool_t isTrig[2]={kTRUE,kTRUE};
+
for ( Int_t cath = AliMp::kCath0; cath <= AliMp::kCath1; ++cath )
{
const AliMpVSegmentation* seg
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 !");
+ }
+}