]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
- propagate trigger flags to ESDs
authorjklein <jklein@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 28 Sep 2011 09:22:37 +0000 (09:22 +0000)
committerjklein <jklein@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 28 Sep 2011 09:22:37 +0000 (09:22 +0000)
TRD/AliTRDReconstructor.cxx
TRD/AliTRDReconstructor.h
TRD/AliTRDrawStream.cxx

index a457fb75f81ecb9d84bbc7c83977126161ac83fe..df5eb5c1ff1c09ec1276b22c2fe90dca5422ca07 100644 (file)
@@ -42,6 +42,7 @@
 #include "AliESDEvent.h"
 #include "AliESDTrdTrack.h"
 #include "AliESDTrdTracklet.h"
+#include "AliESDTrdTrigger.h"
 #include "AliTRDtrackletWord.h"
 
 #define SETFLG(n,f) ((n) |= f)
@@ -49,6 +50,7 @@
 
 ClassImp(AliTRDReconstructor)
 
+AliESDTrdTrigger AliTRDReconstructor::fgTriggerFlags;
 TClonesArray *AliTRDReconstructor::fgClusters = NULL;
 TClonesArray *AliTRDReconstructor::fgTracklets = NULL;
 TClonesArray *AliTRDReconstructor::fgTracks = NULL;
@@ -190,6 +192,10 @@ void AliTRDReconstructor::ConvertDigits(AliRawReader *rawReader
   // take over GTU tracks
   fgTracks = rawData.TracksArray();
   rawData.SetTracksOwner(0x0);
+
+  for (Int_t iSector = 0; iSector < 18; iSector++) {
+    fgTriggerFlags.SetFlags(iSector, rawData.GetTriggerFlags(iSector));
+  }
 }
 
 //_____________________________________________________________________________
@@ -227,6 +233,10 @@ void AliTRDReconstructor::Reconstruct(AliRawReader *rawReader
   fgTracks = fClusterizer->TracksArray();
   fClusterizer->SetTracksOwner(kFALSE);
 
+  for (Int_t iSector = 0; iSector < 18; iSector++) {
+    fgTriggerFlags.SetFlags(iSector, fClusterizer->GetTriggerFlags(iSector));
+  }
+
   if(IsWritingClusters()) return;
 
   // take over ownership of clusters
@@ -309,7 +319,7 @@ void AliTRDReconstructor::FillESD(TTree* /*digitsTree*/
       if ((hc < 0) || (hc >= 1080)) {
        AliError(Form("HC for tracklet: 0x%08x out of range: %i", trkl->GetTrackletWord(), trkl->GetHCId()));
        continue;
-}
+      }
       AliDebug(5, Form("hc: %4i : 0x%08x z: %2i", hc, trkl->GetTrackletWord(), trkl->GetZbin()));
       if (hc != lastHC) {
        AliDebug(2, Form("set tracklet index for HC %i to %i", hc, iTracklet));
@@ -409,6 +419,8 @@ void AliTRDReconstructor::FillESD(TTree* /*digitsTree*/
     }
   }
 
+  esd->SetTrdTrigger(&fgTriggerFlags);
+
   // clearing variables for next event
   fgTracklets = 0x0;
   fgTracks = 0x0;
index c15ff7e03f3f5d7aff3e7d1383cde24dd11f779d..729ebe9a22bb9c60884f868e60b933982948e5e7 100644 (file)
@@ -17,6 +17,7 @@
 #include "AliTRDpidUtil.h"
 #include "AliTRDrecoParam.h"
 #include "AliTRDdigitsParam.h"
+#include "AliESDTrdTrigger.h"
 
 class TClonesArray;
 class TTreeSRedirector;
@@ -105,6 +106,7 @@ private:
   static TClonesArray *fgTracks;      //  list of GTU tracks for local reconstructor
   static Int_t         fgNTimeBins;   //  number of time bins as given by the clusterizer
   AliTRDclusterizer   *fClusterizer;  //! instance of TRD clusterizer
+  static AliESDTrdTrigger fgTriggerFlags; //  L1 trigger flags
 
   ClassDef(AliTRDReconstructor, 5)    //  Class for the TRD reconstruction
 
index 3d0447f529104ec8a3deeb24d99e3767cc97cff1..597ab3f8a6ec75acd7fec28b7e24eeefa72e1aa4 100644 (file)
@@ -692,7 +692,7 @@ Int_t AliTRDrawStream::DecodeGTUtracks()
 
            Float_t pt = (((Int_t) (trackWord & 0xffff) ^ 0x8000) - 0x8000)/128.;
            if (TMath::Abs(pt) > 0.1) {
-             trk->SetA((Int_t) (0.15*51625./100./pt / 160e-4 * 2));
+             trk->SetA((Int_t) (-0.15*51625./100./pt / 160e-4 * 2));
            }
          }
         }
@@ -717,6 +717,8 @@ Int_t AliTRDrawStream::DecodeGTUtracks()
        if ((idx == 0) &&
            ((fPayloadCurr[iWord] & 0xfffff0f0) == 0x13370000)) {
          fastWord = fPayloadCurr[iWord];
+         if (fastWord & (1 << 13))
+           fCurrTrgFlags[sector] |= 1 << (stack+11);
          AliDebug(1, Form("stack %i: fast trigger word: 0x%08x", stack, fastWord));
          continue;
        }
@@ -1416,8 +1418,10 @@ Int_t AliTRDrawStream::ReadTPData(Int_t mode)
 
        if (diff != 0) {
          MCMError(kTPmismatch,
-                  "Seen 0x%08x, expected 0x%08x, diff: 0x%08x (0x%02x) - word %2i (cpu %i, ch %i)",
-                  *fPayloadCurr, expword, diff, 0xff & (diff | diff >> 8 | diff >> 16 | diff >> 24),
+                  "Seen 0x%08x, expected 0x%08x, diff: 0x%08x (0x%02x, 0x%04x) - word %2i (cpu %i, ch %i)",
+                  *fPayloadCurr, expword, diff,
+                  0xff & (diff | diff >> 8 | diff >> 16 | diff >> 24),
+                  0xffff & (diff | diff >> 16),
                   wordcount, cpu, channelcount);;
        }
        fPayloadCurr++;