00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #include <algorithm>
00048 #include <float.h>
00049 #include "StEventSummary.h"
00050 #include "SystemOfUnits.h"
00051 #ifndef ST_NO_NAMESPACES
00052 using units::tesla;
00053 using units::degree;
00054 #endif
00055
00056 static const char rcsid[] = "$Id: StEventSummary.cxx,v 2.11 2009/11/23 16:34:06 fisyak Exp $";
00057
00058 ClassImp(StEventSummary)
00059
00060 StEventSummary::StEventSummary()
00061 {
00062 initBinRanges();
00063
00064 mNumberOfTracks = 0;
00065 mNumberOfGoodTracks = 0;
00066 mNumberOfGoodPrimaryTracks = 0;
00067 mNumberOfPositiveTracks = 0;
00068 mNumberOfNegativeTracks = 0;
00069 mNumberOfExoticTracks = 0;
00070 mNumberOfVertices = 0;
00071 mNumberOfVertexTypes.Set(mVertexTypeArraySize);
00072 mNumberOfPileupVertices = 0;
00073 mMeanPt = 0;
00074 mMeanPt2 = 0;
00075 mMeanEta = 0;
00076 mRmsEta = 0;
00077
00078 mEtaBins.Set(mPtAndEtaBinsSize);
00079 mPtBins.Set(mPtAndEtaBinsSize);
00080 mPhiBins.Set(mPhiBinsSize);
00081
00082 mEtaOfTracksHisto.Set(mHistogramSize);
00083 mPtOfTracksHisto.Set(mHistogramSize);
00084 mPhiOfTracksHisto.Set(mHistogramSize);
00085 mEneryVsEtaHisto.Set(mHistogramSize);
00086 mEnergyVsPhiHisto.Set(mHistogramSize);
00087 mMagneticFieldZ = 0;
00088 }
00089
00090
00091 StEventSummary::~StEventSummary() { }
00092
00093 void
00094 StEventSummary::initBinRanges()
00095 {
00096 mVertexTypeArraySize = 5;
00097 mPhiBinsSize = 10;
00098 mPtAndEtaBinsSize = 9;
00099 mHistogramSize = 10;
00100
00101 mEtaBins.Set(mPtAndEtaBinsSize);
00102 mPtBins.Set(mPtAndEtaBinsSize);
00103 mPhiBins.Set(mPhiBinsSize);
00104
00105 mEtaBins[0] = -2.;
00106 mEtaBins[1] = -1.;
00107 mEtaBins[2] = -0.5;
00108 mEtaBins[3] = .5;
00109 mEtaBins[4] = 1.;
00110 mEtaBins[5] = 2.;
00111 mEtaBins[6] = 2.;
00112 mEtaBins[7] = 2.;
00113 mEtaBins[8] = 2.;
00114
00115 mPtBins[0] = 0.1;
00116 mPtBins[1] = 0.15;
00117 mPtBins[2] = 0.2;
00118 mPtBins[3] = 0.3;
00119 mPtBins[4] = 0.5;
00120 mPtBins[5] = 1.;
00121 mPtBins[6] = 1.;
00122 mPtBins[7] = 1.;
00123 mPtBins[8] = 1.;
00124
00125 mPhiBins[0] = 0*degree;
00126 mPhiBins[1] = 36*degree;
00127 mPhiBins[2] = 72*degree;
00128 mPhiBins[3] = 108*degree;
00129 mPhiBins[4] = 144*degree;
00130 mPhiBins[5] = 180*degree;
00131 mPhiBins[6] = 216*degree;
00132 mPhiBins[7] = 252*degree;
00133 mPhiBins[8] = 288*degree;
00134 mPhiBins[9] = 324*degree;
00135 }
00136
00137 int StEventSummary::numberOfTracks() const { return mNumberOfTracks; }
00138
00139 int StEventSummary::numberOfGoodTracks() const { return mNumberOfGoodTracks; }
00140
00141 int StEventSummary::numberOfGoodTracks(StChargeSign s) const
00142 {
00143 return s == negative ? mNumberOfNegativeTracks : mNumberOfPositiveTracks;
00144 }
00145
00146 int
00147 StEventSummary::numberOfGoodPrimaryTracks() const { return mNumberOfGoodPrimaryTracks; }
00148
00149 int
00150 StEventSummary::numberOfExoticTracks() const { return mNumberOfExoticTracks; }
00151
00152 int
00153 StEventSummary::numberOfVertices() const { return mNumberOfVertices; }
00154
00155 int
00156 StEventSummary::numberOfVerticesOfType(StVertexId id) const
00157 {
00158 unsigned int i = id-1;
00159 if (i < mVertexTypeArraySize)
00160 return const_cast<TArrayL&>(mNumberOfVertexTypes)[i];
00161 else
00162 return 0;
00163 }
00164
00165 int
00166 StEventSummary::numberOfPileupVertices() const { return mNumberOfPileupVertices; }
00167
00168 float
00169 StEventSummary::meanPt() const { return mMeanPt; }
00170
00171 float
00172 StEventSummary::meanPt2() const { return mMeanPt2; }
00173
00174 float
00175 StEventSummary::meanEta() const { return mMeanEta; }
00176
00177 float
00178 StEventSummary::rmsEta() const { return mRmsEta; }
00179
00180 const StThreeVectorF&
00181 StEventSummary::primaryVertexPosition() const { return mPrimaryVertexPos; }
00182
00183 unsigned int
00184 StEventSummary::numberOfBins() const { return mHistogramSize; }
00185
00186 int
00187 StEventSummary::tracksInEtaBin(unsigned int i) const
00188 {
00189 return i < mHistogramSize ? const_cast<TArrayL&>(mEtaOfTracksHisto)[i] : 0;
00190 }
00191
00192 int
00193 StEventSummary::tracksInPhiBin(unsigned int i) const
00194 {
00195 return i < mHistogramSize ? const_cast<TArrayL&>(mPhiOfTracksHisto)[i] : 0;
00196 }
00197
00198 int
00199 StEventSummary::tracksInPtBin(unsigned int i) const
00200 {
00201 return i < mHistogramSize ? const_cast<TArrayL&>(mPtOfTracksHisto)[i] : 0;
00202 }
00203
00204 float
00205 StEventSummary::energyInEtaBin(unsigned int i) const
00206 {
00207 return i < mHistogramSize ? const_cast<TArrayF&>(mEneryVsEtaHisto)[i] : 0;
00208 }
00209
00210 float
00211 StEventSummary::energyInPhiBin(unsigned int i) const
00212 {
00213 return i < mHistogramSize ? const_cast<TArrayF&>(mEnergyVsPhiHisto)[i] : 0;
00214 }
00215
00216 float
00217 StEventSummary::lowerEdgeEtaBin(unsigned int i) const
00218 {
00219 if (i <= mPtAndEtaBinsSize) {
00220 if (i == 0)
00221 return -FLT_MAX;
00222 else
00223 return const_cast<TArrayF&>(mEtaBins)[i-1];
00224 }
00225 else
00226 return 0;
00227 }
00228
00229 float
00230 StEventSummary::upperEdgeEtaBin(unsigned int i) const
00231 {
00232 if (i <= mPtAndEtaBinsSize) {
00233 if (i == mPtAndEtaBinsSize)
00234 return FLT_MAX;
00235 else
00236 return const_cast<TArrayF&>(mEtaBins)[i];
00237 }
00238 else
00239 return 0;
00240 }
00241
00242 float
00243 StEventSummary::lowerEdgePtBin(unsigned int i) const
00244 {
00245 if (i <= mPtAndEtaBinsSize) {
00246 if (i == 0)
00247 return 0;
00248 else
00249 return const_cast<TArrayF&>(mPtBins)[i-1];
00250 }
00251 else
00252 return 0;
00253 }
00254
00255 float
00256 StEventSummary::upperEdgePtBin(unsigned int i) const
00257 {
00258 if (i <= mPtAndEtaBinsSize) {
00259 if (i == mPtAndEtaBinsSize)
00260 return FLT_MAX;
00261 else
00262 return const_cast<TArrayF&>(mPtBins)[i];
00263 }
00264 else
00265 return 0;
00266 }
00267
00268 float
00269 StEventSummary::lowerEdgePhiBin(unsigned int i) const
00270 {
00271 if (i < mPhiBinsSize)
00272 return const_cast<TArrayF&>(mPhiBins)[i];
00273 else
00274 return 0;
00275 }
00276
00277 float
00278 StEventSummary::upperEdgePhiBin(unsigned int i) const
00279 {
00280 if (i < mPhiBinsSize) {
00281 if ((int)i == mPhiBinsSize-1)
00282 return const_cast<TArrayF&>(mPhiBins)[0];
00283 else
00284 return const_cast<TArrayF&>(mPhiBins)[i+1];
00285 }
00286 else
00287 return 0;
00288 }
00289
00290 void
00291 StEventSummary::setNumberOfTracks(int val) { mNumberOfTracks = val; }
00292
00293 void
00294 StEventSummary::setNumberOfGoodTracks(int val) { mNumberOfGoodTracks = val; }
00295
00296 void
00297 StEventSummary::setNumberOfGoodTracks(StChargeSign s, int val)
00298 {
00299 if (s == negative)
00300 mNumberOfNegativeTracks = val;
00301 else
00302 mNumberOfPositiveTracks = val;
00303 }
00304
00305 void
00306 StEventSummary::setNumberOfGoodPrimaryTracks(int val) { mNumberOfGoodPrimaryTracks = val; }
00307
00308 void
00309 StEventSummary::setNumberOfExoticTracks( int val) { mNumberOfExoticTracks = val; }
00310
00311 void
00312 StEventSummary::setNumberOfVertices(int val) { mNumberOfVertices = val; }
00313
00314 void
00315 StEventSummary::setNumberOfVerticesForType(StVertexId id, int val)
00316 {
00317 int i = id-1;
00318 if (i < mVertexTypeArraySize)
00319 mNumberOfVertexTypes[i] = val;
00320 }
00321
00322 void
00323 StEventSummary::setNumberOfPileupVertices(int val) { mNumberOfPileupVertices = val; }
00324
00325 void
00326 StEventSummary::setMeanPt(float val) { mMeanPt = val; }
00327
00328 void
00329 StEventSummary::setMeanPt2(float val) { mMeanPt2 = val; }
00330
00331 void
00332 StEventSummary::setMeanEta(float val) { mMeanEta = val; }
00333
00334 void
00335 StEventSummary::setRmsEta(float val) { mRmsEta = val; }
00336
00337 void
00338 StEventSummary::setPrimaryVertexPosition(const StThreeVectorF& val) { mPrimaryVertexPos = val; }
00339
00340 double
00341 StEventSummary::magneticField() const { return mMagneticFieldZ; }
00342
00343 void
00344 StEventSummary::setMagneticField(double val) { mMagneticFieldZ = val; }