#include "AliESDEvent.h"
#include "AliESDTrdTrack.h"
#include "AliESDTrdTracklet.h"
+#include "AliESDTrdTrigger.h"
#include "AliTRDtrackletWord.h"
#define SETFLG(n,f) ((n) |= f)
ClassImp(AliTRDReconstructor)
+AliESDTrdTrigger AliTRDReconstructor::fgTriggerFlags;
TClonesArray *AliTRDReconstructor::fgClusters = NULL;
TClonesArray *AliTRDReconstructor::fgTracklets = NULL;
TClonesArray *AliTRDReconstructor::fgTracks = NULL;
// take over GTU tracks
fgTracks = rawData.TracksArray();
rawData.SetTracksOwner(0x0);
+
+ for (Int_t iSector = 0; iSector < 18; iSector++) {
+ fgTriggerFlags.SetFlags(iSector, rawData.GetTriggerFlags(iSector));
+ }
}
//_____________________________________________________________________________
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
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));
}
}
+ esd->SetTrdTrigger(&fgTriggerFlags);
+
// clearing variables for next event
fgTracklets = 0x0;
fgTracks = 0x0;
#include "AliTRDpidUtil.h"
#include "AliTRDrecoParam.h"
#include "AliTRDdigitsParam.h"
+#include "AliESDTrdTrigger.h"
class TClonesArray;
class TTreeSRedirector;
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
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));
}
}
}
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;
}
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++;