]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
- allow for sliding window in jet trigger evaluation
authorjklein <jochen.klein@cern.ch>
Wed, 16 Apr 2014 11:35:37 +0000 (13:35 +0200)
committerjklein <jochen.klein@cern.ch>
Wed, 16 Apr 2014 11:35:37 +0000 (13:35 +0200)
PWG/TRD/AliTRDTriggerAnalysis.cxx
PWG/TRD/AliTRDTriggerAnalysis.h

index 4fb21538ba00f403c3ceeaaa8d276573af8fcad6..dc2dfe49567f1612bfccfef247bece151f8539ba 100644 (file)
@@ -39,6 +39,7 @@ AliTRDTriggerAnalysis::AliTRDTriggerAnalysis() :
   fRequireMatch(kFALSE),
   fRequireMatchElectron(kFALSE),
   fRequireInTime(kTRUE),
+  fJetTriggerMode(kHJTDefault),
   fTRDlayerMaskEl(0x1),
   fTRDnTrackletsEl(5),
   fTRDptHSE(3.),
@@ -168,7 +169,8 @@ Bool_t AliTRDTriggerAnalysis::CalcTriggers(const AliVEvent *event)
     MarkInput(kHEE);
 
   // evaluate TRD GTU tracks
-  Int_t nTracks[90]      = { 0 }; // stack-wise counted number of tracks above pt threshold
+  const Int_t nStacks = (fJetTriggerMode == kHJTWindowZPhi) ? 360 : 90;
+  Int_t nTracks[360] = { 0 }; // stack-wise counted number of tracks above pt threshold
 
   Int_t nTrdTracks = event->GetNumberOfTrdTracks();
 
@@ -209,7 +211,33 @@ Bool_t AliTRDTriggerAnalysis::CalcTriggers(const AliVEvent *event)
 
     // stack-wise counting of tracks above pt threshold for jet trigger
     if (TMath::Abs(trdTrack->Pt()) >= fTRDptHJT) {
-      ++nTracks[globalStack];
+      if (fJetTriggerMode == kHJTDefault)
+       ++nTracks[globalStack];
+      else if (fJetTriggerMode == kHJTWindowZPhi) {
+       AliESDTrdTrack *esdTrdTrack = dynamic_cast<AliESDTrdTrack*> (trdTrack);
+       if (esdTrdTrack) {
+         Double_t a = esdTrdTrack->GetA()/128.;
+         Double_t b = esdTrdTrack->GetB()/128.;
+         Double_t c = esdTrdTrack->GetC()/256. / TMath::Tan( -2.0 / 180.0 * TMath::Pi() );
+         Double_t x = 297.759; // L0: 297.759, L1: 309.17
+
+         Double_t ypos = -a + x*b + (a >= 0. ? -0.253 : 0.253);
+         Double_t zpos = c*x + (c >= 0. ? -0.84 : 0.84);
+
+         const Float_t zStackCenter[5] = {241, 117, 0, -117, -241};
+
+         Bool_t upperHalfPhi = ypos >= 0.;
+         Bool_t upperHalfZ = zpos >= zStackCenter[esdTrdTrack->GetStack()];
+
+         Int_t stackIdx = 20 * esdTrdTrack->GetSector() + (upperHalfPhi ? 10 : 0) + 2 * esdTrdTrack->GetStack() + (upperHalfZ ? 1 : 0);
+         ++nTracks[stackIdx];
+         ++nTracks[stackIdx - 10 + (((stackIdx - 10) < 0) ? 360 : 0)];
+         if ((stackIdx % 10) != 0) {
+           ++nTracks[stackIdx -  1];
+           ++nTracks[stackIdx - 11 + (((stackIdx - 11) < 0) ? 360 : 0)];
+         }
+       }
+      }
     }
 
     // ignore the track for the electron triggers
@@ -237,7 +265,7 @@ Bool_t AliTRDTriggerAnalysis::CalcTriggers(const AliVEvent *event)
   }
 
   // check if HJT condition is fulfilled in any stack
-  for (Int_t iStack = 0; iStack < 90; ++iStack) {
+  for (Int_t iStack = 0; iStack < nStacks; ++iStack) {
     if (nTracks[iStack] >= fTRDnHJT) {
       MarkCondition(kHJT, iStack);
       break;
index 3156f5293cd8e1d9d9bf764a3e8b78c454d7b66f..08b0c8fbc1de41fc35ac5fd071a1b918f94138ca 100644 (file)
@@ -21,6 +21,8 @@ public:
 
   enum TRDTrigger_t { kHCO = 0, kHJT, kHSE, kHQU, kHEE, kHlast };
 
+  enum JetTriggerMode_t { kHJTDefault = 0, kHJTWindowZPhi };
+
   void ResetTriggers();
   Bool_t CalcTriggers(const AliVEvent* event);
 
@@ -61,6 +63,9 @@ public:
   void SetRequireInTime(Bool_t val) { fRequireInTime = val; }
   Bool_t GetRequireInTime() const { return fRequireInTime; }
 
+  void SetJetTriggerMode(Int_t mode) { fJetTriggerMode = mode; }
+  Int_t GetJetTriggerMode() const { return fJetTriggerMode; }
+
   void SetVerbosity(UChar_t val) { fVerbosity = val; }
   UChar_t GetVerbosity() const { return fVerbosity; }
 
@@ -87,6 +92,9 @@ protected:
   Bool_t fRequireMatchElectron;        // require a matched global track
                                // for the electron conditions
   Bool_t fRequireInTime;       // require the tracks to be in time
+  Int_t  fJetTriggerMode;       // select mode for jet trigger
+                               // 0: default (stack-wise counting, as hw)
+                               // 1: count in overlapping windows of stack size
 
   // trigger thresholds
   UChar_t fTRDlayerMaskEl;      // mask for tracklet requirements