StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StHiMicroEvent.cxx
1 /***************************************************************************
2  *
3  * $Id: StHiMicroEvent.cxx,v 1.4 2007/07/12 19:41:00 fisyak Exp $
4  *
5  * Author: Bum Choi, UT Austin, Apr 2002
6  *
7  ***************************************************************************
8  *
9  * Description: This is a uDST for highpt Analysis.
10  *
11  ***************************************************************************
12  *
13  * $Log: StHiMicroEvent.cxx,v $
14  * Revision 1.4 2007/07/12 19:41:00 fisyak
15  * Add includes for ROOT 5.16
16  *
17  * Revision 1.3 2003/09/02 17:58:36 perev
18  * gcc 3.2 updates + WarnOff
19  *
20  * Revision 1.2 2002/06/05 02:31:51 jklay
21  * New Nch centrality limits from Zhangbu added
22  *
23  * Revision 1.1 2002/04/02 19:36:15 jklay
24  * Bums highpt uDST format
25  *
26  *
27  **************************************************************************/
28 #include "StHiMicroEvent.h"
29 #include "Stiostream.h"
30 #include <math.h>
31 #define DEBUG 1
32 // set the static pointers to zero.
33 TClonesArray* StHiMicroEvent::mSTracks = 0;
34 TClonesArray* StHiMicroEvent::mSHits = 0;
35 
36 //______________________
37 
38 StHiMicroEvent::StHiMicroEvent()
39  : mNTrack(0)
40 {
41  //
42  // create the clones arrays the first time any
43  // StHiMicroEvent object is instantiated
44  //
45  Int_t trackSZ = 1000;
46  Int_t hitSZ = trackSZ*50;
47 
48  if(DEBUG)
49  cout << "StHiMicroEvent::StHiMicroEvent" << endl
50  << "\tCreating the clonesarrays..." << endl;
51 
52  if(!mSTracks)
53  mTracks = new TClonesArray("StHiMicroTrack",trackSZ);
54  if(!mSHits)
55  mHits = new TClonesArray("StHiMicroHit",hitSZ);
56 
57  if(DEBUG) cout << "\t...done" <<endl;
58 
59  //
60  // set the static pointers so that we dont create the
61  // the clonesarrays again
62  //
63  mSTracks = mTracks;
64  mSHits = mHits;
65 
66 }
67 //_______________________
68 
69 StHiMicroEvent::~StHiMicroEvent()
70 {
71  if(DEBUG) cout << "StHiMicroEvent::~StHiMicroEvent" << endl;
72 
73 
74 }
75 
76 //______________________
77 //
78 // add a high pt track to the clones array
79 //
80 void
81 StHiMicroEvent::AddTrack(StHiMicroTrack* track)
82 {
83  TClonesArray &tracks = *mTracks;
84  //
85  // use memberwise copy
86  //
87  new(tracks[mNTrack++]) StHiMicroTrack(*track);
88 
89 }
90 //_______________________
91 
92 void
93 StHiMicroEvent::AddHit(StHiMicroHit* hit)
94 {
95  TClonesArray &hits = *mHits;
96  //
97  // memberwise copy...
98  //
99  new(hits[mNHit++]) StHiMicroHit(*hit);
100 
101 }
102 
103 //_______________________
104 //
105 // centrality definition as determined by the flow team
106 //
107 void
108 StHiMicroEvent::SetCentrality(Int_t N)
109 {
110 //Ok, this method is rewritten to be very similar to the FLOW version, incorporating different
111 //B-fields, etc.
112 
113  if (this->CenterOfMassEnergy() >= 199.) {
114  if (fabs(this->MagneticField()) >= 4.) {
115  cout << "StHiMicroEvent->SetCentralityYear2AuAuFull: " << N << endl;
116 
117  // Centrality for year=2, Au+Au and Full Field
118  // Zhangbu's corrected numbers as of 4-Jun-2002:
119  int cent[] = {14,30,56,94,146,217,312,431,510};
120  if (N < cent[0]) { mCentrality = 0; }
121  else if (N < cent[1]) { mCentrality = 1; }
122  else if (N < cent[2]) { mCentrality = 2; }
123  else if (N < cent[3]) { mCentrality = 3; }
124  else if (N < cent[4]) { mCentrality = 4; }
125  else if (N < cent[5]) { mCentrality = 5; }
126  else if (N < cent[6]) { mCentrality = 6; }
127  else if (N < cent[7]) { mCentrality = 7; }
128  else if (N < cent[8]) { mCentrality = 8; }
129  else { mCentrality = 9; }
130  }
131  else {
132  cout << "StHiMicroEvent->SetCentralityYear2AuAuHalf: " << N << endl;
133 
134  // Centrality for year=2, Au+Au and Half Field
135 
136  int cent[] = {14,32,59,98,149,216,302,409,474};
137  if (N < cent[0]) { mCentrality = 0; }
138  else if (N < cent[1]) { mCentrality = 1; }
139  else if (N < cent[2]) { mCentrality = 2; }
140  else if (N < cent[3]) { mCentrality = 3; }
141  else if (N < cent[4]) { mCentrality = 4; }
142  else if (N < cent[5]) { mCentrality = 5; }
143  else if (N < cent[6]) { mCentrality = 6; }
144  else if (N < cent[7]) { mCentrality = 7; }
145  else if (N < cent[8]) { mCentrality = 8; }
146  else { mCentrality = 9; }
147  }
148  }
149  else {
150  cout << "StHiMicroEvent->SetCentrality: " << N << endl;
151 
152  cout << "WARNING: MAKE SURE THE RIGHT ETA RANGE IS DEFINED BEFORE USING THESE DEFINITIONS!!!" << endl;
153  //year 1, |eta|<0.75, year 2, |eta|<0.5
154 
155  // Centrality for year=1
156 
157  int cent[] = {20,100,180,270,360,460,560,660,870};
158  if (N < cent[0]) { mCentrality = 0; }
159  else if (N < cent[1]) { mCentrality = 1; }
160  else if (N < cent[2]) { mCentrality = 2; }
161  else if (N < cent[3]) { mCentrality = 3; }
162  else if (N < cent[4]) { mCentrality = 4; }
163  else if (N < cent[5]) { mCentrality = 5; }
164  else if (N < cent[6]) { mCentrality = 6; }
165  else if (N < cent[7]) { mCentrality = 7; }
166  else if (N < cent[8]) { mCentrality = 8; }
167  else { mCentrality = 9; }
168  }
169 
170 }
171 
172 //_______________________
173 
174 void
175 StHiMicroEvent::Clear(Option_t* option)
176 {
177  mTracks->Clear(option);
178  mHits->Clear(option);
179  mNTrack = 0;
180  mNHit = 0;
181 }
182 
183 ClassImp(StHiMicroEvent)
184