1 <!DOCTYPE HTML PUBLIC "-// IETF/DTD HTML 2.0// EN">
4 <!-- Author: ROOT team (rootdev@hpsalo.cern.ch) -->
6 <!-- Date: Thu Mar 9 00:11:48 2000 -->
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.">
16 <body BGCOLOR="#ffffff" LINK="#0000ff" VLINK="#551a8b" ALINK="#ff0000" TEXT="#000000">
17 <a name="TopOfPage"></a>
19 /**************************************************************************
20 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
22 * Author: The ALICE Off-line Project. *
23 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
36 <b>//_________________________________________________________________________</b>
37 <b>// PHOS digit: Id</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>
44 <b>//*-- Author: Laurent Aphecetche & Yves Schutz (SUBATECH)</b>
47 <b>// --- ROOT system ---</b>
49 <b>// --- Standard library ---</b>
51 #include <iostream>
53 <b>// --- AliRoot header files ---</b>
55 #include "<a href="../AliPHOSDigit.h">AliPHOSDigit.h</a>"
58 ClassImp(AliPHOSDigit)
60 <b>//____________________________________________________________________________</b>
61 <a name="AliPHOSDigit:AliPHOSDigit"> </a> <a href=".././AliPHOSDigit.html#AliPHOSDigit:AliPHOSDigit">AliPHOSDigit::AliPHOSDigit</a>()
63 <b> // default ctor </b>
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 ;
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)
74 <b> // ctor with all data </b>
78 <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary1">fPrimary1</a> = primary ;
79 <a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a> = 1 ;
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> & digit)
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> ;
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)
98 <b> // Compares two digits with respect to its Id</b>
99 <b> // to sort according increasing Id</b>
101 <a href="../ListOfTypes.html#Int_t">Int_t</a> rv ;
103 <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> * digit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *)obj ;
105 <a href="../ListOfTypes.html#Int_t">Int_t</a> iddiff = fId - digit->GetId() ;
109 else if ( iddiff < 0 )
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
121 <b> // Returns the primary particle id index =1,2,3</b>
123 <a href="../ListOfTypes.html#Int_t">Int_t</a> rv = -1 ;
125 cout << "<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> ERROR > only 3 primaries allowed" << endl ;
129 rv = <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary1">fPrimary1</a> ;
132 rv = <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary2">fPrimary2</a> ;
135 rv = <a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary3">fPrimary3</a> ;
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 & digit) const
147 <b> // Two digits are equal if they have the same Id</b>
149 if ( fId == digit.fId )
155 <b>//____________________________________________________________________________</b>
156 <a href=".././AliPHOSDigit.html">AliPHOSDigit</a>& <a href=".././AliPHOSDigit.html#AliPHOSDigit:operator">AliPHOSDigit::operator</a>+(<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> const & digit)
158 <b> // Adds the amplitude of digits and completes the list of primary particles</b>
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>
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> ;
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> ;
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> ;
178 if ( <a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a> >= 3 ) {
179 cout << "<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> + operator ERROR > too many primaries, modify <a href=".././AliPHOSDigit.html">AliPHOSDigit</a>" << endl ;
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> > 3 ) {
184 cout << "<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> + operator ERROR > too many primaries, modify <a href=".././AliPHOSDigit.html">AliPHOSDigit</a>" << endl ;
185 <a href=".././AliPHOSDigit.html#AliPHOSDigit:fNprimary">fNprimary</a> = 3 ;
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 < max1 ; index++)
191 tempo3[index] = tempo1[index] ;
192 for (index = 0 ; index < max2 ; index++)
193 tempo3[index+max1] = tempo2[index] ;
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] ;
200 <b> // end of crummy stuff </b>
205 <b>//____________________________________________________________________________</b>
206 ostream& operator << ( ostream& out , const <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> & digit)
208 <b> // Prints the data of the digit</b>
210 out << "ID " << digit.fId << " Energy = " << digit.fAmp << endl
211 << "Primary 1 = " << digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary1">fPrimary1</a> << endl
212 << "Primary 2 = " << digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary2">fPrimary2</a> << endl
213 << "Primary 3 = " << digit.<a href=".././AliPHOSDigit.html#AliPHOSDigit:fPrimary3">fPrimary3</a> << endl ;
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>
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.