// @(#) $Id$
#ifndef ALIHLTTPCDISPLAY_H
#define ALIHLTTPCDISPLAY_H
/** \class AliHLTTPCDisplay
//_____________________________________________________________
// AliHLTTPCDisplay
//
// Display class for the HLT TPC events.
*/
// Author: Jochen Thaeder
// Anders Vestbo
//*-- Copyright © ALICE HLT Group
#include
#include
#include
#include
class AliHLTTPCSpacePointData;
class AliHLTTPCTrackArray;
class AliHLTTPCDisplay : public TObject {
public:
AliHLTTPCDisplay(Char_t *gfile="$(ALIHLT_BASEDIR)/geo/alice.geom");
virtual ~AliHLTTPCDisplay();
// SETUP
void SetupHistPadRow();
void SetupCluster(Int_t slice, Int_t patch, UInt_t nofClusters, AliHLTTPCSpacePointData* data);
void SetupTracks(AliHLTTPCTrackArray *tracks);
void FillPadRow(Int_t patch, ULong_t dataBlock, ULong_t dataLen);
void ResetHistPadRow();
// DRAWER
void Draw3D();
void DrawHistPadRow();
void DrawGeomSector(Int_t sector);
void DrawHistPad1();
void DrawHistPad2();
void DrawHistPad3();
// SETTER
void SetSliceArray();
void SetSlices(){fMinSlice = 0; fMaxSlice = 35; fSlicePair = kFALSE; SetSliceArray();}
void SetSlices(Int_t s){fMinSlice = s; fMaxSlice = s; fSlicePair = kFALSE; SetSliceArray();}
void SetSlices(Int_t mins, Int_t maxs){fMinSlice = mins; fMaxSlice = maxs; fSlicePair = kFALSE; SetSliceArray();}
void SetSlicesPair(Int_t s){fMinSlice = s; fMaxSlice = s; fSlicePair = kTRUE; SetSliceArray();}
void SetSlicesPair(Int_t mins, Int_t maxs){fMinSlice = mins; fMaxSlice = maxs; fSlicePair = kTRUE; SetSliceArray();}
void SetPad(Int_t f){fPad = f;}
void SetPadRow(Int_t f){fPadRow = f;}
void SetSlicePadRow(Int_t f){fSlicePadRow = f;}
void SetMinHits(Int_t f){fMinHits = f;}
void SetPtThreshold(Float_t f){fPtThreshold = f;}
void SetSwitches(Bool_t f1, Bool_t f2, Bool_t f3, Bool_t f4) {fSwitch3DTracks = f1; fSwitch3DCluster = f2; fSwitch3DPadRow = f3; fSwitch3DGeometry = f4;}
void SetHistPadRowAxis();
void SetSelectTrack(Int_t f) {fSelectTrack = f;}
void SetSelectTrackSlice(Int_t f) {fSelectTrackSlice = f;}
void SetSelectTrackSwitch(Bool_t f) {fSelectTrackSwitch = f;}
void SetSelectCluster(Int_t f) {fSelectCluster = f;}
void SetInvert() {Int_t tmp = fBackColor; fBackColor = fLineColor; fLineColor = tmp; }
void SetKeepView(Bool_t f){fKeepView = f;}
// GETTER
Int_t GetPadRow(){return fPadRow;}
Int_t GetSlicePadRow(){return fSlicePadRow;}
Int_t GetNPads(){return fNPads;}
Int_t GetBackColor() {return fBackColor;}
private:
Bool_t LoadGeometrie(Char_t *gfile);
AliHLTTPCDisplay(const AliHLTTPCDisplay &/*d*/):TObject(){;}
AliHLTTPCDisplay& operator=(const AliHLTTPCDisplay &/*d*/){return *this;}
AliHLTTPCSpacePointData *fClusters[36][6];
AliHLTTPCTrackArray *fTracks;
UInt_t fNcl[36][6];//number of cluster
TH1F *fHistrawcl; // histogram for cluster in padrow
TH2F *fHistraw; // histogram for signals in padrow
TH1F *fHistpad1; // histogram for pad in padrow
TH1F *fHistpad2; // histogram for pad in padrow
TH1F *fHistpad3; // histogram for pad in padrow
TGeometry *fGeom; // geometry
Int_t fBackColor; // Background color
Int_t fLineColor; // Line color
Bool_t fKeepView; // Keep View when redisplaying
Int_t fPad; // pad
Int_t fPadRow; // padrow
Int_t fSlicePadRow;// slice where padrow is in
Int_t fNPads; // number of pads in padrow
Int_t fNTimes; // number of timebins
Int_t fMinHits; // minimum cluster per track
Float_t fPtThreshold;// pt threshold for tracks
Bool_t fSelectTrackSwitch;// switch ti single track mode
Int_t fSelectTrack;// select single track
Int_t fSelectTrackSlice; // select slice for single track
Int_t fSelectCluster; // select all=0, used=1, unused=2 cluster
Int_t fMinSlice; //min slice
Int_t fMaxSlice; //max slice
Bool_t fSlicePair; //draw pair of slices;
Bool_t fSliceArray[36];//Array if slice should be drawn or not
Bool_t fDrawGeo;
Int_t fcolorbin[20]; // number of entries per colorbin
Int_t fbinct[20]; // index of colorbin
Float_t *fpmarr[20]; // contains point data
Bool_t fSwitch3DCluster;
Bool_t fSwitch3DTracks;
Bool_t fSwitch3DPadRow;
Bool_t fSwitch3DGeometry;
ClassDef(AliHLTTPCDisplay,1) //Display class
};
#endif