74f8c8e3 |
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 | |
16 | /* $Id$ */ |
17 | |
18 | //=================================================================== |
19 | // Segment element position in local coordinates of the detection element |
20 | // Gines MARTINEZ, SUBATECH July 04 |
21 | // This class is one of the basic component of |
22 | // AliMUONSegmentationDetectionElement and contains al the |
23 | // info about a segment (pad or strip): |
24 | // Id-indetectionelement, x_local, y_local |
25 | // Detailed information in Alice Technical Note xxxxxxxx (2004) |
26 | //==================================================================== |
27 | |
212bb69d |
28 | #include <TMath.h> |
29 | |
74f8c8e3 |
30 | #include "AliMUONSegmentPosition.h" |
31 | |
32 | //___________________________________________ |
33 | ClassImp(AliMUONSegmentPosition) |
34 | |
6b74910d |
35 | Float_t AliMUONSegmentPosition::fUnit = 0.3 ; // 3mm unit for generation of segmenposition name |
36 | |
74f8c8e3 |
37 | // |
38 | //___________________________________________ |
39 | AliMUONSegmentPosition::AliMUONSegmentPosition() : TNamed() |
40 | { |
212bb69d |
41 | //Default constructor |
74f8c8e3 |
42 | fChannelId = 0; |
43 | fX = 0.; |
44 | fY = 0.; |
45 | } |
46 | //___________________________________________ |
47 | AliMUONSegmentPosition::AliMUONSegmentPosition(const Int_t channelId, const Float_t x, const Float_t y, const Int_t cathode) : TNamed() |
48 | { |
212bb69d |
49 | // Constructor to be used |
50 | fName = Name(x,y,cathode); |
51 | fTitle= Name(x,y,cathode); |
74f8c8e3 |
52 | fChannelId = channelId; |
53 | fX = x; |
54 | fY = y; |
55 | fCathode=cathode; |
6b74910d |
56 | fPadSizeX=0.; |
57 | fPadSizeY=0.; |
74f8c8e3 |
58 | } |
59 | //_______________________________________________ |
60 | AliMUONSegmentPosition::~AliMUONSegmentPosition() |
61 | { |
212bb69d |
62 | // Destructor |
74f8c8e3 |
63 | } |
64 | //___________________________________________ |
65 | Int_t AliMUONSegmentPosition::Compare(const TObject *obj) const |
66 | { |
212bb69d |
67 | // Comparison of two AliMUONSegmentPosition objects |
74f8c8e3 |
68 | AliMUONSegmentPosition * myobj = ( AliMUONSegmentPosition *) obj; |
69 | return (fChannelId > myobj->GetChannelId()) ? 1 : -1; |
70 | } |
6b74910d |
71 | |
72 | //___________________________________________ |
73 | Float_t AliMUONSegmentPosition::Distance(Float_t x, Float_t y) |
74 | { |
75 | return TMath::Sqrt( (fX-x)*(fX-x) + (fY-y)*(fY-y) ) ; |
76 | } |
74f8c8e3 |
77 | //___________________________________________ |
212bb69d |
78 | TString AliMUONSegmentPosition::Name(Float_t x, Float_t y, Int_t cathode) |
79 | { |
80 | // Definition of the name of AliMUONSegmentPosition |
81 | // Our convention since the smaller pad pich is 5 mm is to choice a 3mm unit: |
82 | // So for a position pair x,y and cathode plane icathode the name will be: |
83 | // xp = TMath::Nint(x*10./3.); |
84 | // yp = TMath::Nint(y+10./3.); |
85 | // sprintf(name,"%d-%d-%d",xp,yp,cathode); |
6b74910d |
86 | Int_t xp = TMath::Nint(x/fUnit); |
87 | Int_t yp = TMath::Nint(y/fUnit); |
212bb69d |
88 | char name[15]; |
89 | sprintf(name,"%d-%d-%d",xp,yp,cathode); |
90 | return TString(name); |
91 | } |
92 | //___________________________________________ |
74f8c8e3 |
93 | void AliMUONSegmentPosition::Print() const |
94 | { |
212bb69d |
95 | // Printing AliMUONSegmentManuIndex information |
96 | Info("Print","Name=%s Id=%d X=%f Y=%f Cathode=%d\n",fName.Data(),fChannelId, fX, fY,fCathode); |
74f8c8e3 |
97 | } |