]> git.uio.no Git - u/mrichter/AliRoot.git/blame - FMD/AliFMDStripIndex.h
Export hit structure header
[u/mrichter/AliRoot.git] / FMD / AliFMDStripIndex.h
CommitLineData
82fcb4e0 1#ifndef ALIFMDSTRIPINDEX_H
2#define ALIFMDSTRIPINDEX_H
a91c42d1 3/**************************************************************************
4 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * *
6 * Author: The ALICE Off-line Project. *
7 * Contributors are mentioned in the code where appropriate. *
8 * *
9 * Permission to use, copy, modify and distribute this software and its *
10 * documentation strictly for non-commercial purposes is hereby granted *
11 * without fee, provided that the above copyright notice appears in all *
12 * copies and that both the copyright notice and this permission notice *
13 * appear in the supporting documentation. The authors make no claims *
14 * about the suitability of this software for any purpose. It is *
15 * provided "as is" without express or implied warranty. *
16 **************************************************************************/
17
faf80567 18// Struct to encode a strip address into one integer
19// developed by Christian Holm Christensen (cholm@nbi.dk).
20//
21// The functions are static to ensure applicability from
22// anywhere. This is needed to smoothly store strip addresses in track
23// references.
24//
a91c42d1 25// Added by Hans H. Dalsgaard (hans.dalsgaard@cern.ch)
26
27
faf80567 28class AliFMDStripIndex
a91c42d1 29{
faf80567 30public:
e6c798e6 31 enum {
32 // Mask of ID
33 kIdMask = 0x0007FFFF,
34 // Mask of energy
35 kEMask = 0xFFF80000,
36 // Offset of energy
37 kEOffset = 19
38 };
faf80567 39 /**
40 * Constructor
41 *
42 */
43 AliFMDStripIndex() {}
44 /**
45 * Destructor
46 *
47 */
48 virtual ~AliFMDStripIndex() {}
49 /**
50 * Pack an identifier from detector coordinates
51 *
52 * @param det Detector
53 * @param rng Ring
54 * @param sec Sector
55 * @param str Strip
56 *
57 * @return Packed identifier
58 */
a91c42d1 59 static UInt_t Pack(UShort_t det, Char_t rng, UShort_t sec, UShort_t str)
60 {
61 UInt_t irg = (rng == 'I' || rng == 'i' ? 0 : 1);
62 UInt_t id = (((str & 0x1FF) << 0) |
63 ((sec & 0x03F) << 9) |
64 ((irg & 0x001) << 16) |
65 ((det & 0x003) << 17));
e6c798e6 66 return (id & kIdMask);
a91c42d1 67 }
faf80567 68 /**
69 * Unpack an identifier to detector coordinates
70 *
71 * @param id Identifier to unpack
72 * @param det On return, the detector
73 * @param rng On return, the ring
74 * @param sec On return, the sector
75 * @param str On return, the strip
76 */
a91c42d1 77 static void Unpack(UInt_t id,
faf80567 78 UShort_t& det, Char_t& rng, UShort_t& sec, UShort_t& str)
a91c42d1 79 {
e6c798e6 80 UInt_t tmp = (kIdMask & id);
81 str = ((tmp >> 0) & 0x1FF);
82 sec = ((tmp >> 9) & 0x03F);
83 rng = ((tmp >> 16) & 0x001) ? 'O' : 'I';
84 det = ((tmp >> 17) & 0x003);
a91c42d1 85 }
faf80567 86 ClassDef(AliFMDStripIndex,1)
a91c42d1 87};
82fcb4e0 88#endif
faf80567 89//
90// Local Variables:
91// mode: C++
92// End:
93//