Modifications needed by the HBT analysis (P.Skowronski)
[u/mrichter/AliRoot.git] / MUON / AliMUONSt1ElectronicElement.cxx
CommitLineData
ba030c0e 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15
88cb7938 16/* $Id$ */
ba030c0e 17
18// Authors: David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay
19//
20// Class AliMUONSt1ElectronicElement
21// ---------------------------------
22// Describes a set of pads either by defining
23// a range of indices, or
24// a range of (centimeters) positions or
25// a range of electronic channel numbers or
26// a range of MANU numbers or, finally,
27// a range of gassiplex/MANAS numbers, in a given range of MANU addresses
28
3c25381f 29#include "AliMpPad.h"
30
ba030c0e 31#include "AliMUONSt1ElectronicElement.h"
32
33ClassImp(AliMUONSt1ElectronicElement);
34
35//______________________________________________________________________________
36AliMUONSt1ElectronicElement::AliMUONSt1ElectronicElement()
37 :TObject(),fDescription(kNone)
38{
39// default constructor
40}
41
42//______________________________________________________________________________
43AliMUONSt1ElectronicElement::AliMUONSt1ElectronicElement(TDescription descr)
44 :TObject(),fDescription(descr)
45{
46// normal constructor
47 switch (descr){
48 case kXY : SetRange(0,0.,0.); SetRange(1,0.,0.); break;
49 default: SetRange(0,0,0); SetRange(1,0,0); break;
50 }
51}
52
53//______________________________________________________________________________
54AliMUONSt1ElectronicElement::~AliMUONSt1ElectronicElement()
55{
56// destructor
57}
58
59//______________________________________________________________________________
60void AliMUONSt1ElectronicElement::SetRange(Int_t numVar,Int_t i1,Int_t i2)
61{
62// set the range of the <numVar>th variables, in all cases but kXY
63// ---
64
65 if (fDescription==kXY) {
66 fRanges[numVar][0].x = (Double_t)i1;
67 fRanges[numVar][1].x = (Double_t)i2;
68 } else {
69 fRanges[numVar][0].i = i1;
70 fRanges[numVar][1].i = i2;
71 }
72}
73
74//______________________________________________________________________________
75void AliMUONSt1ElectronicElement::SetRange(Int_t numVar,Double_t x1,Double_t x2)
76{
77// set the range of the <numVar>th variable, in cases kXY
78// ---
79
80 if (fDescription==kXY) {
81 fRanges[numVar][0].x = x1;
82 fRanges[numVar][1].x = x2;
83 } else {
84 fRanges[numVar][0].i = (Int_t)x1;
85 fRanges[numVar][1].i = (Int_t)x2;
86 }
87}
88
89//______________________________________________________________________________
90Bool_t AliMUONSt1ElectronicElement::IsInRange(Int_t numVar,Int_t i) const
91{
92// is the given value in the <numVar>th variable
93// ---
94
95 return (fRanges[numVar][0].i<=i) && (fRanges[numVar][1].i>=i);
96}
97
98//______________________________________________________________________________
99Bool_t AliMUONSt1ElectronicElement::IsInRange(Int_t numVar,Double_t x) const
100{
101// is the given value in the <numVar>th variable
102// ---
103
104 return (fRanges[numVar][0].x<=x) && (fRanges[numVar][1].x>=x);
105}
106
107//______________________________________________________________________________
5f91c9e8 108Bool_t AliMUONSt1ElectronicElement::Contains(const AliMpPad& pad) const
ba030c0e 109{
110// is the pad <pad> contained in this range
111// ---
112
113 switch(fDescription){
114 case kNone:
115 return kFALSE;
116 case kIJ :
117 return ( IsInRange(0,pad.GetIndices().GetFirst())
118 && IsInRange(1,pad.GetIndices().GetSecond())
119 );
120 case kXY :
121 return ( IsInRange(0,pad.Position().X())
122 && IsInRange(1,pad.Position().Y())
123 );
124 case kMGC :
125 return ( IsInRange(0,pad.GetLocation().GetFirst())
126 && IsInRange(1,pad.GetLocation().GetSecond())
127 );
128 case kMG :
129 return ( IsInRange(0,pad.GetLocation().GetFirst())
130 && IsInRange(1,pad.GetLocation().GetSecond() >> 4)
131 );
132 case kM :
133 return ( IsInRange(0,pad.GetLocation().GetFirst()));
134
135 default: return kFALSE;
136 }
137}