00001 #include "StEEmcMixEvent.h"
00002 ClassImp(StEEmcMixEvent);
00003
00004
00005 StEEmcMixEvent::StEEmcMixEvent()
00006 {
00007 for ( Int_t ii=0;ii<90;ii++ )
00008 {
00009 pedEEmcDSM_HT[ii]=1;
00010 pedEEmcDSM_TP[ii]=1;
00011 }
00012
00013 for ( Int_t ii=0;ii<10;ii++ )
00014 {
00015 pedEEmcDSM_TP[ii+00] = (ii%2)? 3 : 5;
00016 pedEEmcDSM_TP[ii+20] = (ii%2)? 3 : 5;
00017 pedEEmcDSM_TP[ii+30] = (ii%2)? 3 : 5;
00018 pedEEmcDSM_TP[ii+50] = (ii%2)? 3 : 5;
00019 pedEEmcDSM_TP[ii+60] = (ii%2)? 3 : 5;
00020 pedEEmcDSM_TP[ii+80] = (ii%2)? 3 : 5;
00021 }
00022 Clear();
00023 }
00024
00025
00026 void StEEmcMixEvent::setEvent( StMuEvent *event )
00027 {
00028
00029 mEventId = event->eventId();
00030 mEventNumber = event->eventNumber();
00031 mRunId = event->runId();
00032 mRunNumber = event->runNumber();
00033 mEventInfo = event->eventInfo();
00034 mRunInfo = event->runInfo();
00035 mL0trigger = event->l0Trigger();
00036 mMuTriggerIdCollection = event->triggerIdCollection();
00037 mMagneticField = event->magneticField();
00038 mBbcTrigger = event->bbcTriggerDetector();
00039 mEmcTrigger = event->emcTriggerDetector();
00040
00041 }
00042
00043
00044
00045 void StEEmcMixEvent::Clear(Option_t *o)
00046 {
00047 nPairs=0;
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077 mMass.clear();
00078 mPT.clear();
00079 mEta.clear();
00080 mPhi.clear();
00081 mZgg.clear();
00082 mPhigg.clear();
00083 mEnergy.clear();
00084 mEpre1.clear();
00085 mEpre2.clear();
00086 mEpost.clear();
00087 mEsmdu.clear();
00088 mEsmdv.clear();
00089 mZvertex.clear();
00090
00091 mTower1.clear();
00092 mTower2.clear();
00093 mEnergy1.clear();
00094 mEnergy2.clear();
00095
00096 mNumberT.clear();
00097 mNumberR.clear();
00098 mNumberU.clear();
00099 mNumberV.clear();
00100
00101 mNumberOfTracks.clear();
00102 mNumberOfPoints.clear();
00103
00104 mNumberOfTowerClusters.clear();
00105 mNumberOfSmduClusters.clear();
00106 mNumberOfSmdvClusters.clear();
00107
00108 for ( Int_t ii=0;ii<720;ii++ ) {
00109 mADC[ii]=0.;
00110 mGain[ii]=-1.;
00111 mStat[ii]=0;
00112 }
00113
00114
00115
00116 mTotalEnergyT=0.;
00117 mTotalEnergyP=0.;
00118 mTotalEnergyQ=0.;
00119 mTotalEnergyR=0.;
00120 mTotalEnergyU=0.;
00121 mTotalEnergyV=0.;
00122
00123 }
00124
00125
00126 void StEEmcMixEvent::addPair ( StEEmcPair p ) {
00127
00128
00129
00130 mMass.push_back ( p.mass() );
00131 mPT.push_back( p.pt() );
00132 mEta.push_back( p.momentum().Eta() );
00133 mPhi.push_back( p.momentum().Phi() );
00134 mPhigg.push_back( p.phigg() );
00135 mZgg.push_back( p.zgg() );
00136 mEnergy.push_back( p.energy() );
00137
00138 Float_t esmdu=0.;
00139 Float_t esmdv=0.;
00140 esmdu += p.point(0).cluster(0).energy();
00141 esmdu += p.point(1).cluster(0).energy();
00142 esmdv += p.point(0).cluster(1).energy();
00143 esmdv += p.point(1).cluster(1).energy();
00144
00145 Int_t index1=p.point(0).tower(0).index();
00146 Int_t index2=p.point(1).tower(0).index();
00147
00148 Float_t epre1 = 0.;
00149 epre1 += p.point(0).energy(1);
00150 if (index1!=index2) epre1 += p.point(1).energy(1);
00151
00152 Float_t epre2 = 0.;
00153 epre2 += p.point(0).energy(2);
00154 if (index1!=index2) epre2 += p.point(1).energy(2);
00155
00156 Float_t epost = 0.;
00157 epost += p.point(0).energy(3);
00158 if (index1!=index2) epost += p.point(1).energy(3);
00159
00160 mEpre1.push_back( epre1 );
00161 mEpre2.push_back( epre2 );
00162 mEpost.push_back( epost );
00163 mEsmdu.push_back( esmdu );
00164 mEsmdv.push_back( esmdv );
00165
00166 mZvertex.push_back( p.vertex().Z() );
00167
00168 mTower1.push_back( p.point(0).tower(0).index() );
00169 mTower2.push_back( p.point(1).tower(0).index() );
00170 mEnergy1.push_back( p.point(0).energy() );
00171 mEnergy2.push_back( p.point(1).energy() );
00172
00173 nPairs++;
00174
00175 }
00176
00177
00178 Float_t StEEmcMixEvent::sum3x3(Int_t index)
00179 {
00180 Float_t sum=this->mADC[index];
00181 Int_t ieta = index%12;
00182 Int_t iphi = index/12;
00184 for ( Int_t jeta=ieta-1;jeta<=ieta+1;jeta++ ) {
00185 if ( jeta<0||jeta>11 ) continue;
00186 for ( Int_t jphi=iphi-1;jphi<=iphi+1;jphi++ ) {
00187 Int_t myeta=jeta;
00188 Int_t myphi=(jphi+60)%60;
00189 if ( myeta==ieta&&myphi==iphi ) continue;
00190 Float_t myEt=this->mADC[ myeta + 12*myphi ];
00191 sum += myEt;
00192 }
00193 }
00194 return sum;
00195 }
00196 Float_t StEEmcMixEvent::sum3x3()
00197 {
00198 Float_t max=0.;
00199 Int_t index = 0;
00200 for ( Int_t ii=0;ii<720;ii++ )
00201 if ( this->mADC[ii] > max ) {
00202 index=ii;
00203 max=this->mADC[ii];
00204 }
00205 return sum3x3(index);
00206 }
00207 Float_t StEEmcMixEvent::htdsm()
00208 {
00209 Float_t max=0.;
00210 for ( Int_t ii=0;ii<90;ii++ ) {
00211 Float_t dsm=mEmcTrigger.highTowerEndcap(ii);
00212 dsm-=pedEEmcDSM_HT[ii];
00213 if ( dsm>max ) max=dsm;
00214 }
00215 return max;
00216 }
00217 Float_t StEEmcMixEvent::tpdsm()
00218 {
00219 Float_t max=0.;
00220 for ( Int_t ii=0;ii<90;ii++ ) {
00221 Float_t dsm=mEmcTrigger.patchEndcap(ii);
00222 dsm-=pedEEmcDSM_TP[ii];
00223 if ( dsm>max ) max=dsm;
00224 }
00225 return max;
00226 }
00227 Int_t StEEmcMixEvent::npi0()
00228 {
00229 Int_t count=0;
00230 for ( Int_t ii=0;ii<TMath::Min(5,nPairs);ii++ )
00231 {
00232 if ( mMass[ii]>0.11 && mMass[ii]<0.17 ) count++;
00233 }
00234 return count;
00235 }
00236 Int_t StEEmcMixEvent::deta(Int_t id)
00237 {
00238 if ( id<0||id>=nPairs)
00239 return -1;
00240 Int_t del = ( mTower1[id]%12 - mTower2[id]%12 );
00241 return TMath::Abs(del);
00242 }
00243 Int_t StEEmcMixEvent::dphi(Int_t id)
00244 {
00245 if ( id<0||id>=nPairs)
00246 return -1;
00247 Int_t del = ( mTower1[id]/12 - mTower2[id]/12 + 60 ) % 60;
00248 return TMath::Abs(del);
00249 }