From Massimo: remove usage of AliITSgeom, use AliITSgeomTGeo instead.
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveITSDigitsInfo.h
CommitLineData
d810d0de 1// $Id$
2// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4/**************************************************************************
5 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
51346b82 7 * full copyright notice. *
d810d0de 8 **************************************************************************/
5a5a1232 9
10#ifndef ALIEVE_ITSDigitsInfo_H
11#define ALIEVE_ITSDigitsInfo_H
12
84aff7a4 13#include <TEveUtil.h>
5a5a1232 14
15#include <map>
3d598e88 16#include <vector>
5a5a1232 17
18#include <TObject.h>
19#include <TClonesArray.h>
20#include <TTree.h>
21
12f6a2f3 22//class AliITSgeom;
0879c50b 23class AliITSsegmentationSPD;
24class AliITSsegmentationSDD;
25class AliITSsegmentationSSD;
26class AliITSDDLModuleMapSDD;
5a5a1232 27
b3bc5327 28class AliRawReader;
5a5a1232 29
57ffa5fb 30/******************************************************************************/
d810d0de 31// AliEveITSModuleSelection
57ffa5fb 32/******************************************************************************/
d810d0de 33class AliEveITSModuleSelection
3d598e88 34{
54f770b4 35protected:
36 Int_t fType; // Type of modules: 0 - SPD, 1 - SDD, 2 - SSD.
37 Int_t fLayer; // Layer, 0 - inner SPD, 5 - outer SSD.
38 Float_t fMinPhi; // Min phi.
39 Float_t fMaxPhi; // Max phi.
40 Float_t fMinTheta; // Min theta.
41 Float_t fMaxTheta; // Max theta.
51346b82 42
54f770b4 43public:
d810d0de 44 AliEveITSModuleSelection();
45 virtual ~AliEveITSModuleSelection() {}
3d598e88 46
54f770b4 47 Int_t GetType() const { return fType; }
48 void SetType(Int_t x) { fType = x; }
49 Int_t GetLayer() const { return fLayer; }
50 void SetLayer(Int_t x) { fLayer = x; }
51 Float_t GetMinPhi() const { return fMinPhi; }
52 void SetMinPhi(Float_t x) { fMinPhi = x; }
53 Float_t GetMaxPhi() const { return fMaxPhi; }
54 void SetMaxPhi(Float_t x) { fMaxPhi = x; }
55 Float_t GetMinTheta() const { return fMinTheta; }
56 void SetMinTheta(Float_t x) { fMinTheta = x; }
57 Float_t GetMaxTheta() const { return fMaxTheta; }
58 void SetMaxTheta(Float_t x) { fMaxTheta = x; }
59
60 void SetPhiRange (Float_t x, Float_t y) { fMinPhi = x; fMaxPhi = y; }
61 void SetThetaRange(Float_t x, Float_t y) { fMinTheta = x; fMaxTheta = y; }
62
63 ClassDef(AliEveITSModuleSelection, 1); // Helper for selecting a range of ITS modules by type, layer, phi and theta.
3d598e88 64};
65
57ffa5fb 66/******************************************************************************/
d810d0de 67// AliEveITSDigitsInfo
57ffa5fb 68/******************************************************************************/
54f770b4 69
d810d0de 70class AliEveITSDigitsInfo : public TObject, public TEveRefCnt
5a5a1232 71{
d810d0de 72 AliEveITSDigitsInfo(const AliEveITSDigitsInfo&); // Not implemented
73 AliEveITSDigitsInfo& operator=(const AliEveITSDigitsInfo&); // Not implemented
265ecb21 74
5a5a1232 75private:
54f770b4 76 Float_t fSPDZCoord[192]; // Precalculated z-coordinates for positions of digits.
5a5a1232 77
b3bc5327 78 void InitInternals();
79
5a5a1232 80protected:
fd31e9de 81 std::map<Int_t, TClonesArray*> fSPDmap; // Map from module-id to SPD data.
82 std::map<Int_t, TClonesArray*> fSDDmap; // Map from module-id to SDD data.
83 std::map<Int_t, TClonesArray*> fSSDmap; // Map from module-id to SSD data.
5a5a1232 84
85 void SetITSSegmentation();
86
87public:
54f770b4 88 TTree* fTree; // Tree from which the digits are read.
89
54f770b4 90 AliITSsegmentationSPD* fSegSPD; // Segmentation of SPD.
91 AliITSsegmentationSDD* fSegSDD; // Segmentation of SDD.
92 AliITSsegmentationSSD* fSegSSD; // Segmentation of SSD.
0879c50b 93 AliITSDDLModuleMapSDD* fDDLMapSDD; // Mapping DDL/module to SDD-module number.
54f770b4 94
20807c14 95 Int_t fSPDMinVal; // Default low limit for display of SPD digits.
96 Int_t fSSDMinVal; // Default low limit for display of SSD digits.
97 Int_t fSDDMinVal; // Default low limit for display of SDD digits.
98 Int_t fSPDMaxVal; // Default high limit for display of SPD digits.
99 Int_t fSSDMaxVal; // Default high limit for display of SSD digits.
100 Int_t fSDDMaxVal; // Default high limit for display of SDD digits.
54f770b4 101
102 Int_t fSPDHighLim; // Maximum value of SPD digits.
103 Int_t fSDDHighLim; // Maximum value of SDD digits.
104 Int_t fSSDHighLim; // Maximum value of SSD digits.
105
106 Int_t fSPDScaleX[5]; // SPD cell-sizes along X for display of scaled-digits.
107 Int_t fSPDScaleZ[5]; // SPD cell-sizes along Z for display of scaled-digits.
108 Int_t fSDDScaleX[5]; // SDD cell-sizes along X for display of scaled-digits.
109 Int_t fSDDScaleZ[5]; // SDD cell-sizes along Z for display of scaled-digits.
110 Int_t fSSDScale [5]; // SSD cell-sizes for display of scaled-digits.
d4b6a94c 111
d810d0de 112 AliEveITSDigitsInfo();
113 virtual ~AliEveITSDigitsInfo();
5a5a1232 114
115 void SetTree(TTree* tree);
540e156e 116 void ReadRaw(AliRawReader* raw, Int_t mode);
b3bc5327 117
5a5a1232 118 TClonesArray* GetDigits(Int_t moduleID, Int_t detector);
119
120 void GetSPDLocalZ(Int_t j, Float_t& z);
121
d810d0de 122 void GetModuleIDs(AliEveITSModuleSelection* sel, std::vector<UInt_t>& ids);
3d598e88 123
5a5a1232 124 virtual void Print(Option_t* opt="") const;
125
0879c50b 126 ClassDef(AliEveITSDigitsInfo, 0); // Stores ITS geometry information and event-data in format suitable for visualization.
d810d0de 127}; // endclass AliEveITSDigitsInfo
5a5a1232 128
0879c50b 129
54f770b4 130inline void AliEveITSDigitsInfo::GetSPDLocalZ(Int_t j, Float_t& z)
131{
132 z = fSPDZCoord[j];
133}
134
5a5a1232 135#endif