1 /**************************************************************************
2 * Copyright(c) 2004, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 /** @file AliFMDDigit.cxx
17 @author Christian Holm Christensen <cholm@nbi.dk>
18 @date Mon Mar 27 12:37:41 2006
19 @brief Digits for the FMD
21 //////////////////////////////////////////////////////////////////////
23 // Class that holds an FMD index. That is, it holds the detector
24 // coordinates for a given strip:
26 // Variable | Type | Range | Description
27 // ---------+----------+---------+------------------
28 // detector | UShort_t | 1-3 | Detector number
29 // ring | Char_t | 'I'/'O' | Ring identifier
30 // sector | UShort_t | 0-39 | Sector number
31 // strip | UShort_t | 0-511 | Strip number
33 //////////////////////////////////////////////////////////////////////
35 #include "AliFMDIndex.h" // ALIFMDINDEX_H
36 #include "Riostream.h" // ROOT_Riostream
37 #include <TString.h> // ROOT_TString
38 #include <AliFMDMap.h>
40 //====================================================================
45 ; // This is here to keep Emacs from indenting the next line
48 //____________________________________________________________________
49 AliFMDIndex::AliFMDIndex()
60 //____________________________________________________________________
61 AliFMDIndex::AliFMDIndex(const AliFMDIndex& o)
62 : fDetector(o.fDetector),
72 //____________________________________________________________________
73 AliFMDIndex::AliFMDIndex(UShort_t detector,
77 : fDetector(detector),
85 // Creates a base data digit object
89 // detector Detector # (1, 2, or 3)
90 // ring Ring ID ('I' or 'O')
91 // sector Sector # (For inner/outer rings: 0-19/0-39)
92 // strip Strip # (For inner/outer rings: 0-511/0-255)
95 //____________________________________________________________________
97 AliFMDIndex::operator=(const AliFMDIndex& o)
99 // Assignment operator
100 if (&o == this) return *this;
101 fDetector = o.fDetector;
109 //____________________________________________________________________
111 AliFMDIndex::Hash() const
113 // calculate hash value
115 size_t ringi = (fRing == 'I' || fRing == 'i' ? 0 : 1);
117 AliFMDMap::kMaxStrips *
118 (fSector + AliFMDMap::kMaxSectors *
119 (ringi + AliFMDMap::kMaxRings * (fDetector-1))));
125 //____________________________________________________________________
127 AliFMDIndex::Print(Option_t* /* option*/) const
129 // Print digit to standard out
130 cout << Name() << flush;
133 //____________________________________________________________________
135 AliFMDIndex::Name() const
137 // GEt the name of the index
139 fName = Form("FMD%d%c[%2d,%3d]", fDetector, fRing, fSector, fStrip);
143 //====================================================================
144 ClassImp(AliFMDObjIndex)
146 ; // This is here to keep Emacs from indenting the next line
149 //____________________________________________________________________
151 AliFMDObjIndex::Compare(const TObject* o) const
153 // Compare to another index
154 const AliFMDObjIndex* a = dynamic_cast<const AliFMDObjIndex*>(o);
157 "trying to compare to something not a AliFMDObjIndex object, "
158 "but a %s object", o->ClassName());
161 if (this->operator<(*a)) return -1;
162 if (this->operator==(*a)) return 0;
166 //____________________________________________________________________