From: jklein Date: Wed, 28 Sep 2011 09:22:37 +0000 (+0000) Subject: - propagate trigger flags to ESDs X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=c4daee41f7557403438015a28df8d4272c33694d;p=u%2Fmrichter%2FAliRoot.git - propagate trigger flags to ESDs --- diff --git a/TRD/AliTRDReconstructor.cxx b/TRD/AliTRDReconstructor.cxx index a457fb75f81..df5eb5c1ff1 100644 --- a/TRD/AliTRDReconstructor.cxx +++ b/TRD/AliTRDReconstructor.cxx @@ -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; diff --git a/TRD/AliTRDReconstructor.h b/TRD/AliTRDReconstructor.h index c15ff7e03f3..729ebe9a22b 100644 --- a/TRD/AliTRDReconstructor.h +++ b/TRD/AliTRDReconstructor.h @@ -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 diff --git a/TRD/AliTRDrawStream.cxx b/TRD/AliTRDrawStream.cxx index 3d0447f5291..597ab3f8a6e 100644 --- a/TRD/AliTRDrawStream.cxx +++ b/TRD/AliTRDrawStream.cxx @@ -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++;