Line data Source code
1 : //-*- Mode: C++ -*-
2 : // $Id: AliHLTCALOMapper.h 34264 2009-08-14 18:29:23Z odjuvsla $
3 :
4 : #ifndef ALIHLTCALOMAPPER_H
5 : #define ALIHLTCALOMAPPER_H
6 :
7 :
8 : /**************************************************************************
9 : * This file is property of and copyright by the Experimental Nuclear *
10 : * Physics Group, Dep. of Physics *
11 : * University of Oslo, Norway, 2006 *
12 : * *
13 : * Author: Per Thomas Hille perthi@fys.uio.no for the ALICE DCS Project. *
14 : * Contributors are mentioned in the code where appropriate. *
15 : * Please report bugs to perthi@fys.uio.no *
16 : * *
17 : * Permission to use, copy, modify and distribute this software and its *
18 : * documentation strictly for non-commercial purposes is hereby granted *
19 : * without fee, provided that the above copyright notice appears in all *
20 : * copies and that both the copyright notice and this permission notice *
21 : * appear in the supporting documentation. The authors make no claims *
22 : * about the suitability of this software for any purpose. It is *
23 : * provided "as is" without express or implied warranty. *
24 : **************************************************************************/
25 :
26 :
27 : #include "AliHLTCaloConstants.h"
28 : #include "Rtypes.h"
29 : #include "AliHLTLogging.h"
30 : #include "AliHLTCaloConstantsHandler.h"
31 :
32 : #define FILEPATHMAXLENGTH 1024
33 :
34 : class AliHLTCaloCoordinate;
35 :
36 : class AliHLTCaloMapper : public AliHLTCaloConstantsHandler, public AliHLTLogging
37 : {
38 : public:
39 :
40 : AliHLTCaloMapper(const unsigned long specification, TString det);
41 : virtual ~AliHLTCaloMapper();
42 : virtual Bool_t InitAltroMapping( const unsigned long specification ) = 0;
43 : virtual void InitDDLSpecificationMapping() = 0;
44 : bool GetIsInitializedMapping();
45 : virtual char* GetFilePath();
46 :
47 0 : virtual void FixCoordinate(AliHLTCaloCoordinate &input) {} // Needed in case of EMCAL to fix channel online - offline mapping in DCAL supermodules
48 : virtual int GetChannelID(const AliHLTUInt32_t spec, const Int_t hadd);
49 : static void GetChannelCoord(const UShort_t channelId, UShort_t* channelCoord);
50 : static void ChannelId2Coordinate(const int channelId, AliHLTCaloCoordinate &channelCoord);
51 : virtual void GetLocalCoord(const int channelId, Float_t* localCoord) const;
52 : virtual int GetDDLFromSpec( const AliHLTUInt32_t spec );
53 : virtual int GetModuleFromSpec(UInt_t specification);
54 : static unsigned long GetSpecFromDDLIndex( const int ddlindex );
55 :
56 :
57 : struct fAltromap{
58 : char fZRow; // Coordinate in Z direction (beam direction) relatve to one Module
59 : char fXCol; // Coordinate in X direction (perpendicular too beam direction an parallell to ground) relatve to one Module
60 : char fGain; // Gain (high gain = 1, low gain = 0)
61 : };
62 : struct fDDLSpecificationMap{
63 : UInt_t fRcuX; // Coordinate in Z direction (beam direction) relatve too one RCU
64 : UInt_t fRcuZ; // Coordinate in X direction (perpendicular too beam direction an parallell to ground) relatve too one RCU
65 : UInt_t fRcuXOffset;
66 : UInt_t fRcuZOffset;
67 : int fModId;
68 : };
69 :
70 : // struct fDDLSpecificationMap{
71 : // char fModId;
72 : // };
73 :
74 :
75 : fAltromap *fHw2geomapPtr; //pointer to structure holding information about geometrical address
76 :
77 : char fFilepath[FILEPATHMAXLENGTH];
78 :
79 : protected:
80 : float fCellSize;
81 : int fSpecification;
82 : bool fIsInitializedMapping;
83 : fDDLSpecificationMap* fSpecificationMapPtr;
84 : TString fCaloDet;
85 :
86 : private:
87 : AliHLTCaloMapper();
88 : AliHLTCaloMapper(const AliHLTCaloMapper & );
89 : AliHLTCaloMapper & operator = (const AliHLTCaloMapper &);
90 :
91 :
92 6 : ClassDef(AliHLTCaloMapper, 1);
93 :
94 : };
95 :
96 : #endif
|