00001
00010 #ifndef StStrangeEvMuDst_hh
00011 #define StStrangeEvMuDst_hh
00012 #include "StStrangeMuDst.hh"
00013 #include "TMath.h"
00014 #include "stdlib.h"
00015
00016
00017 class StEvent;
00018 class StMcEvent;
00019
00020 class StStrangeEvMuDst : public StStrangeMuDst {
00021 friend class StMuMomentumShiftMaker;
00022
00023 public:
00024 StStrangeEvMuDst();
00025 ~StStrangeEvMuDst();
00026 StStrangeEvMuDst(StEvent&);
00027 StStrangeEvMuDst(StMcEvent&);
00028 void Clear();
00029 void Clear(Option_t* option) {TObject::Clear(option);}
00030
00031 static void SetCorrectionFile(char*);
00032 static void SetFractionFile(char*);
00033
00035
00036
00037 Int_t run() const;
00039 Int_t event() const;
00041 Bool_t unbiasedTrigger() const;
00043 UInt_t l0TriggerWord() const;
00045 Bool_t ftpcGoodRun();
00046 Float_t primaryVertexX() const;
00047 Float_t primaryVertexY() const;
00048 Float_t primaryVertexZ() const;
00050 Float_t magneticField() const;
00052
00054
00055 Int_t globalTracks() const;
00056 Int_t tpcTracks() const;
00057 Int_t ftpcEastTracks() const;
00058 Int_t ftpcWestTracks() const;
00059 Int_t primaryTracks() const;
00060 Int_t tpcPrimTracks() const;
00061 Int_t ftpcEastPrimTracks() const;
00062 Int_t ftpcWestPrimTracks() const;
00063 Int_t primaryNegTracks() const;
00064 Float_t primaryCorrectedTracks() const;
00066 UInt_t zdcWestADC() const;
00068 Float_t fractionSigma() const;
00070
00072
00073 void Fill(StEvent&);
00074 void Fill(StMcEvent&);
00075 void setMagneticField(Float_t);
00076 void setL0TriggerWord(UInt_t);
00077 void setGlobalTracks(Int_t);
00078 void setPrimaryTracks(Int_t);
00080 void tagRunNumber(Int_t);
00082
00083
00084 protected:
00085
00087 Int_t mRun;
00089 Int_t mEvent;
00090 Float_t mPrimaryVertexX;
00091 Float_t mPrimaryVertexY;
00092 Float_t mPrimaryVertexZ;
00093 Int_t mGlobalTracks;
00094 Int_t mPrimaryTracks;
00095 Int_t mPrimaryNegTracks;
00096 Float_t mMagneticField;
00097 UInt_t mL0TriggerWord;
00098
00099 private:
00100
00101 Int_t FTPC(const Int_t) const;
00102
00103 ClassDef(StStrangeEvMuDst,8)
00104 };
00105
00106 inline StStrangeEvMuDst::StStrangeEvMuDst(StEvent& event)
00107 { Fill(event); }
00108 inline StStrangeEvMuDst::StStrangeEvMuDst(StMcEvent& event)
00109 { Fill(event); }
00110
00111 inline void StStrangeEvMuDst::tagRunNumber(Int_t r)
00112 { mRun = - TMath::Abs(r); }
00113 inline Bool_t StStrangeEvMuDst::ftpcGoodRun()
00114 { return (mRun > 0); }
00115
00116 inline Int_t StStrangeEvMuDst::run() const
00117 { return TMath::Abs(mRun); }
00118 inline Int_t StStrangeEvMuDst::event() const
00119 { return TMath::Abs(mEvent); }
00120 inline Bool_t StStrangeEvMuDst::unbiasedTrigger() const
00121 { return (mEvent > 0); }
00122 inline UInt_t StStrangeEvMuDst::l0TriggerWord() const
00123 { return ((run() < 3999999) ? mL0TriggerWord :
00124 (UInt_t) mL0TriggerWord%100000); }
00125 inline UInt_t StStrangeEvMuDst::zdcWestADC() const
00126 { return ((run() < 3999999) ? 0U :
00127 (UInt_t) mL0TriggerWord/100000); }
00128 inline Float_t StStrangeEvMuDst::magneticField() const
00129 { return mMagneticField; }
00130
00131 inline Float_t StStrangeEvMuDst::primaryVertexX() const
00132 { return mPrimaryVertexX; }
00133 inline Float_t StStrangeEvMuDst::primaryVertexY() const
00134 { return mPrimaryVertexY; }
00135 inline Float_t StStrangeEvMuDst::primaryVertexZ() const
00136 { return mPrimaryVertexZ; }
00137
00138
00139
00140 inline Int_t StStrangeEvMuDst::FTPC(const Int_t x) const
00141 { return ((Int_t) (((UInt_t) x)>>13)); }
00142
00143 inline Int_t StStrangeEvMuDst::globalTracks() const
00144 { div_t ftpc = div(FTPC(mGlobalTracks),724);
00145 return (tpcTracks() + ftpc.quot + ftpc.rem); }
00146 inline Int_t StStrangeEvMuDst::tpcTracks() const
00147 { return mGlobalTracks & 0x1fff; }
00148 inline Int_t StStrangeEvMuDst::ftpcEastTracks() const
00149 { return FTPC(mGlobalTracks)%724; }
00150 inline Int_t StStrangeEvMuDst::ftpcWestTracks() const
00151 { return FTPC(mGlobalTracks)/724; }
00152
00153 inline Int_t StStrangeEvMuDst::primaryTracks() const
00154 { div_t ftpc = div(FTPC(mPrimaryTracks),724);
00155 return (tpcPrimTracks() + ftpc.quot + ftpc.rem); }
00156 inline Int_t StStrangeEvMuDst::tpcPrimTracks() const
00157 { return mPrimaryTracks & 0x1fff; }
00158 inline Int_t StStrangeEvMuDst::ftpcEastPrimTracks() const
00159 { return FTPC(mPrimaryTracks)%724; }
00160 inline Int_t StStrangeEvMuDst::ftpcWestPrimTracks() const
00161 { return FTPC(mPrimaryTracks)/724; }
00162 inline Int_t StStrangeEvMuDst::primaryNegTracks() const
00163 { return mPrimaryNegTracks; }
00164
00165 inline void StStrangeEvMuDst::setMagneticField(Float_t b)
00166 { mMagneticField = b; }
00167 inline void StStrangeEvMuDst::setL0TriggerWord(UInt_t trgWrd)
00168 { mL0TriggerWord = trgWrd; }
00169 inline void StStrangeEvMuDst::setGlobalTracks(Int_t newGlob)
00170 { mGlobalTracks = newGlob;}
00171 inline void StStrangeEvMuDst::setPrimaryTracks(Int_t newPrim)
00172 { mPrimaryTracks = newPrim;}
00173
00174 #endif
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225