#include <TNamed.h>
+#include "AliTRDrawStream.h"
+#include "AliTRDgeometry.h"
+
class TFile;
class TTree;
class TClonesArray;
class AliTRDCalROC;
class AliTRDReconstructor;
class AliTRDCalSingleChamberStatus;
-class AliTRDrawStreamBase;
class AliTRDrecoParam;
+class AliTRDCalOnlineGainTableROC;
class AliTRDclusterizer : public TNamed
{
kTrOwner = BIT(14) // toggle online tracklets ownership
,kClOwner= BIT(15) // toggle cluster ownership
,kLabels = BIT(16) // toggle MC labels for clusters
- ,kHLT = BIT(17) // HLT mode
+ ,kSkipTrafo = BIT(17) // skip the coordinate transformation of clusters?
,kLUT = BIT(18) // using look up table for cluster's r-phi position
,kGAUS = BIT(19) // using gauss approx. for cluster's r-phi position
,knewDM = BIT(20) // was the digitsmanger created by raw2clusters?
+ ,kTracksOwner = BIT(21) // toggle GTU track ownership
};
struct MaxStruct
Bool_t ReadDigits(AliRawReader *rawReader);
Bool_t ReadDigits(TTree *digitsTree);
+ Bool_t ReadTracklets();
+ Bool_t ReadTracks();
+
Bool_t WriteClusters(Int_t det);
void ResetRecPoints();
virtual TClonesArray *RecPoints();
- virtual TClonesArray *TrackletsArray();
- Bool_t WriteTracklets(Int_t det);
+ virtual TClonesArray *TrackletsArray(const TString &trkltype = "");
+ virtual TClonesArray *TracksArray();
Bool_t Raw2Clusters(AliRawReader *rawReader);
Bool_t Raw2ClustersChamber(AliRawReader *rawReader);
Int_t GetAddedClusters() const {return fNoOfClusters;}
Int_t GetNTimeBins() const {return fTimeTotal;}
- Bool_t IsClustersOwner() const {return TestBit(kClOwner);}
+ Bool_t IsClustersOwner() const {return TestBit(kClOwner);}
virtual void SetClustersOwner(Bool_t own=kTRUE) {SetBit(kClOwner, own); if(!own) {fRecPoints = 0x0; fNoOfClusters=0;} }
- void SetTrackletsOwner(Bool_t own=kTRUE) {SetBit(kTrOwner, own); if(!own) {fTracklets = 0x0; } }
+ void SetTrackletsOwner(Bool_t own=kTRUE) {SetBit(kTrOwner, own); if(!own) {fTracklets = 0x0; } }
+ void SetTracksOwner(Bool_t own=kTRUE) {SetBit(kTracksOwner, own); if(!own) {fTracks = 0x0; } }
+ void SetSkipTransform(Bool_t b=kTRUE) {SetBit(kSkipTrafo, b); }
+
+ UInt_t GetTriggerFlags(const Int_t sector) const { return fTrgFlags[sector]; }
protected:
+ void ApplyTCTM(Short_t *const arr, const Int_t nTime, const Int_t nexp);
void DeConvExp (Short_t *const arr, const Int_t nTime, const Int_t nexp);
+ void ConvExp(Short_t *const arr, const Int_t nTime);
void TailCancelation(const AliTRDrecoParam* const recoParam);
- Float_t Unfold(Double_t eps, Int_t layer, const Double_t *const padSignal) const;
+ Float_t Unfold(Double_t eps, Int_t layer, const Double_t *const padSignal) const;
void SetPadStatus(const UChar_t status, UChar_t &encoding) const;
UChar_t GetPadStatus(UChar_t encoding) const;
void CreateCluster(const MaxStruct &Max);
virtual void AddClusterToArray(AliTRDcluster* cluster);
- virtual void AddTrackletsToArray();
private:
inline void CalcAdditionalInfo(const MaxStruct &Max, Short_t *const signals, Int_t &nPadCount);
TTree *fClusterTree; //! Tree with the cluster
TClonesArray *fRecPoints; //! Array of clusters
TClonesArray *fTracklets; //! Array of online tracklets
+ TClonesArray *fTracks; //! Array of GTU tracks
TTree *fTrackletTree; //! Tree for tracklets
AliTRDdigitsManager *fDigitsManager; //! TRD digits manager
UInt_t **fTrackletContainer; //! tracklet container
+ // legacy code to avoid breakint AliHLTTRDClusterizer
+ // but it's useless
Int_t fRawVersion; // Expected raw version of the data - default is 2
AliTRDCalROC *fCalNoiseROC; // Calibration object with pad wise values for the noise
Float_t fCalNoiseDetValue; // Calibration value for chamber wise noise
AliTRDCalSingleChamberStatus *fCalPadStatusROC; // Calibration object with the pad status
+ AliTRDCalOnlineGainTableROC *fCalOnGainROC; // Calibration table of online gain factors
Int_t fClusterROC; // The index to the first cluster of a given ROC
Int_t firstClusterROC; // The number of cluster in a given ROC
Int_t fNoOfClusters; // Number of Clusters already processed and still owned by the clusterizer
Int_t fBaseline; // Baseline of the ADC values
- AliTRDrawStreamBase *fRawStream; // Currently used RawStream
+ AliTRDrawStream *fRawStream; // Raw data streamer
+ UInt_t fTrgFlags[AliTRDgeometry::kNsector]; // trigger flags
ClassDef(AliTRDclusterizer,6) // TRD clusterfinder