]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PHOS/PHOS-HTML/src/AliPHOSDigit.cxx.html
This commit was generated by cvs2svn to compensate for changes in r799,
[u/mrichter/AliRoot.git] / PHOS / PHOS-HTML / src / AliPHOSDigit.cxx.html
1 <!DOCTYPE HTML PUBLIC "-// IETF/DTD HTML 2.0// EN">
2 <html>
3 <!--                                             -->
4 <!-- Author: ROOT team (rootdev@hpsalo.cern.ch)  -->
5 <!--                                             -->
6 <!--   Date: Thu Mar  9 00:11:48 2000            -->
7 <!--                                             -->
8 <head>
9 <title>AliPHOSDigit - source file</title>
10 <link rev=made href="mailto:rootdev@root.cern.ch">
11 <meta name="rating" content="General">
12 <meta name="objecttype" content="Manual">
13 <meta name="keywords" content="software development, oo, object oriented, unix, x11, motif, windows nt, c++, html, rene brun, fons rademakers">
14 <meta name="description" content="ROOT - An Object Oriented Framework For Large Scale Data Analysis.">
15 </head>
16 <body BGCOLOR="#ffffff" LINK="#0000ff" VLINK="#551a8b" ALINK="#ff0000" TEXT="#000000">
17 <a name="TopOfPage"></a>
18 <pre>
19 /**************************************************************************
20  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
21  *                                                                        *
22  * Author: The ALICE Off-line Project.                                    *
23  * Contributors are mentioned in the code where appropriate.              *
24  *                                                                        *
25  * Permission to use, copy, modify and distribute this software and its   *
26  * documentation strictly for non-commercial purposes is hereby granted   *
27  * without fee, provided that the above copyright notice appears in all   *
28  * copies and that both the copyright notice and this permission notice   *
29  * appear in the supporting documentation. The authors make no claims     *
30  * about the suitability of this software for any purpose. It is          *
31  * provided "as is" without express or implied warranty.                  *
32  **************************************************************************/
33
34 /* $Id$ */
35
36 <b>//_________________________________________________________________________</b>
37 <b>//  PHOS digit: Id</b>
38 <b>//              energy</b>
39 <b>//              3 identifiers for the primary particle(s) at the origine of the digit</b>
40 <b>//  The digits are made in FinishEvent() by summing all the hits in a single PHOS crystal or PPSD gas cell</b>
41 <b>//  It would be nice to replace the 3 identifiers by an array, but, because digits are kept in a TClonesQArray,</b>
42 <b>//   it is not possible to stream such an array... (beyond my understqnding!)</b>
43 <b>//</b>
44 <b>//*-- Author: Laurent Aphecetche &amp; Yves Schutz (SUBATECH)</b>
45
46
47 <b>// --- ROOT system ---</b>
48
49 <b>// --- Standard library ---</b>
50
51 #include &lt;iostream&gt;
52
53 <b>// --- AliRoot header files ---</b>
54
55 #include "<a href="../AliPHOSDigit.h">AliPHOSDigit.h</a>"
56
57
58 ClassImp(AliPHOSDigit)
59
60 <b>//____________________________________________________________________________</b>
61 <a name="AliPHOSDigit:AliPHOSDigit"> </a>  <a href=".././AliPHOSDigit.html#AliPHOSDigit:AliPHOSDigit">AliPHOSDigit::AliPHOSDigit</a>() 
62 {
63 <b>  // default ctor </b>
64
65   <a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a> = 0 ;  
66   <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary1">fPrimary1</a> = -1 ; 
67   <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary2">fPrimary2</a> = -1 ; 
68   <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary3">fPrimary3</a> = -1 ;
69 }
70
71 <b>//____________________________________________________________________________</b>
72 <a name="AliPHOSDigit:AliPHOSDigit"> </a><a href=".././AliPHOSDigit.html#AliPHOSDigit:AliPHOSDigit">AliPHOSDigit::AliPHOSDigit</a>(<a href="../ListOfTypes.html#Int_t">Int_t</a> primary, <a href="../ListOfTypes.html#Int_t">Int_t</a> id, <a href="../ListOfTypes.html#Int_t">Int_t</a> DigEnergy) 
73 {  
74 <b>  // ctor with all data </b>
75
76   fId         = id ;
77   fAmp        = DigEnergy ;
78   <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary1">fPrimary1</a>   = primary ;
79   <a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a>   = 1 ; 
80 }
81
82 <b>//____________________________________________________________________________</b>
83 <a name="AliPHOSDigit:AliPHOSDigit"> </a><a href=".././AliPHOSDigit.html#AliPHOSDigit:AliPHOSDigit">AliPHOSDigit::AliPHOSDigit</a>(const <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> &amp; digit) 
84 {
85 <b>  // copy ctor</b>
86   
87   fId       = digit.fId;
88   fAmp      = digit.fAmp ;
89   <a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a> = digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a> ;
90   <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary1">fPrimary1</a> = digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary1">fPrimary1</a> ;
91   <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary2">fPrimary2</a> = digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary2">fPrimary2</a> ;
92   <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary3">fPrimary3</a> = digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary3">fPrimary3</a> ;
93 }
94
95 <b>//____________________________________________________________________________</b>
96 <a name="AliPHOSDigit:Compare"> </a><a href="../ListOfTypes.html#Int_t">Int_t</a> <a href=".././AliPHOSDigit.html#AliPHOSDigit:Compare">AliPHOSDigit::Compare</a>(TObject * obj)
97 {
98 <b>  // Compares two digits with respect to its Id</b>
99 <b>  // to sort according increasing Id</b>
100
101   <a href="../ListOfTypes.html#Int_t">Int_t</a> rv ; 
102
103   <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> * digit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *)obj ; 
104
105   <a href="../ListOfTypes.html#Int_t">Int_t</a> iddiff = fId - digit-&gt;GetId() ; 
106
107   if ( iddiff &gt; 0 ) 
108     rv = 1 ;
109   else if ( iddiff &lt; 0 )
110     rv = -1 ; 
111   else
112     rv = 0 ;
113   
114   return rv ; 
115
116 }
117
118 <b>//____________________________________________________________________________</b>
119 <a name="AliPHOSDigit:GetPrimary"> </a><a href="../ListOfTypes.html#Int_t">Int_t</a> <a href=".././AliPHOSDigit.html#AliPHOSDigit:GetPrimary">AliPHOSDigit::GetPrimary</a>(<a href="../ListOfTypes.html#Int_t">Int_t</a> index) const
120 {
121 <b>  // Returns the primary particle id index =1,2,3</b>
122  
123   <a href="../ListOfTypes.html#Int_t">Int_t</a> rv = -1 ; 
124   if ( index &gt; 3 )
125     cout &lt;&lt; "<a href=".././AliPHOSDigit.html">AliPHOSDigit</a>  ERROR &gt; only 3 primaries allowed" &lt;&lt; endl ; 
126   else {
127     switch (index) {  
128     case 1 :
129       rv = <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary1">fPrimary1</a> ; 
130       break ; 
131     case 2 :
132       rv = <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary2">fPrimary2</a> ; 
133       break ; 
134     case 3 :
135       rv = <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary3">fPrimary3</a> ; 
136       break ; 
137     }
138   } 
139
140   return rv ; 
141
142 }
143
144 <b>//____________________________________________________________________________</b>
145 <a href="../ListOfTypes.html#Bool_t">Bool_t</a> <a href=".././AliPHOSDigit.html#AliPHOSDigit:operator">AliPHOSDigit::operator</a>==(<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> const &amp; digit) const 
146 {
147 <b>  // Two digits are equal if they have the same Id</b>
148   
149   if ( fId == digit.fId ) 
150     return kTRUE ;
151   else 
152     return kFALSE ;
153 }
154  
155 <b>//____________________________________________________________________________</b>
156 <a href=".././AliPHOSDigit.html">AliPHOSDigit</a>&amp; <a href=".././AliPHOSDigit.html#AliPHOSDigit:operator">AliPHOSDigit::operator</a>+(<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> const &amp; digit) 
157 {
158 <b>  // Adds the amplitude of digits and completes the list of primary particles</b>
159   
160   fAmp += digit.fAmp ;
161  
162 <b>  // Here comes something crummy ... but I do not know how to stream pointers</b>
163 <b>  // because <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> is in a TCLonesArray</b>
164   
165   <a href="../ListOfTypes.html#Int_t">Int_t</a> tempo1[3] ; 
166   tempo1[0] = <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary1">fPrimary1</a> ; 
167   tempo1[1] = <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary2">fPrimary2</a> ; 
168   tempo1[2] = <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary3">fPrimary3</a> ; 
169
170   <a href="../ListOfTypes.html#Int_t">Int_t</a> tempo2[3] ; 
171   tempo2[0] = digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary1">fPrimary1</a> ; 
172   tempo2[1] = digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary2">fPrimary2</a> ; 
173   tempo2[2] = digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary3">fPrimary3</a> ; 
174
175   <a href="../ListOfTypes.html#Int_t">Int_t</a> max1 = <a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a> ; 
176   <a href="../ListOfTypes.html#Int_t">Int_t</a> max2 = digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a> ; 
177  
178   if ( <a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a> &gt;= 3 ) {
179     cout &lt;&lt; "<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> + operator  ERROR &gt; too many primaries, modify <a href=".././AliPHOSDigit.html">AliPHOSDigit</a>" &lt;&lt; endl ; 
180   } 
181   else {
182     <a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a> += digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a> ; 
183     if ( <a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a> &gt; 3 ) {
184       cout &lt;&lt; "<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> + operator  ERROR &gt; too many primaries, modify <a href=".././AliPHOSDigit.html">AliPHOSDigit</a>" &lt;&lt; endl ; 
185       <a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a> = 3 ;
186     }
187     
188     <a href="../ListOfTypes.html#Int_t">Int_t</a> tempo3[3] ;
189     <a href="../ListOfTypes.html#Int_t">Int_t</a> index ; 
190     for (index = 0 ; index &lt; max1 ; index++)
191       tempo3[index] = tempo1[index] ;
192     for (index = 0 ; index &lt; max2 ; index++)
193       tempo3[index+max1] = tempo2[index] ; 
194     
195     <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary1">fPrimary1</a> = tempo3[0] ; 
196     <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary2">fPrimary2</a> = tempo3[1] ; 
197     <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary3">fPrimary3</a> = tempo3[2] ; 
198
199   }
200 <b> // end of crummy stuff      </b>
201
202   return *this ;
203 }
204
205 <b>//____________________________________________________________________________</b>
206 ostream&amp; operator &lt;&lt; ( ostream&amp; out , const <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> &amp; digit)
207 {
208 <b>  // Prints the data of the digit</b>
209   
210   out &lt;&lt; "ID " &lt;&lt; digit.fId &lt;&lt; " Energy = " &lt;&lt; digit.fAmp &lt;&lt; endl 
211       &lt;&lt; "Primary 1 = " &lt;&lt; digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary1">fPrimary1</a> &lt;&lt; endl 
212       &lt;&lt; "Primary 2 = " &lt;&lt; digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary2">fPrimary2</a> &lt;&lt; endl 
213       &lt;&lt; "Primary 3 = " &lt;&lt; digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary3">fPrimary3</a> &lt;&lt; endl ;
214
215   return out ;
216 }
217
218
219 </pre>
220
221 <!--SIGNATURE-->
222 <br>
223 <address>
224 <hr>
225 <center>
226 <a href="http://root.cern.ch/root/Welcome.html">ROOT page</a> - <a href="../ClassIndex.html">Class index</a> - <a href="#TopOfPage">Top of the page</a><br>
227 </center>
228 <hr>This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to <a href="mailto:rootdev@root.cern.ch">ROOT support</a>, or contact <a href="mailto:rootdev@root.cern.ch">the developers</a> with any questions or problems regarding ROOT.
229 </address>
230 </body>
231 </html>