00001 00011 #include "StEEmcIUPoint.h" 00012 #include "StEEmcUtil/EEmcGeom/EEmcGeomDefs.h" 00013 #include <iostream> 00014 00015 #include "StEvent/StEmcPoint.h" 00016 00017 ClassImp(StEEmcIUPoint); 00018 00019 // ---------------------------------------------------------------------------- 00020 StEEmcIUPoint::StEEmcIUPoint() 00021 { 00022 mEmcPoint=0; 00023 mRelatives=999; 00024 for ( Int_t i=0;i<4;i++ ) mEnergy[i]=0.; 00025 mResidueU=0.; 00026 mResidueV=0.; 00027 } 00028 00029 // ---------------------------------------------------------------------------- 00030 StEEmcIUPoint::StEEmcIUPoint( const StEEmcIUPoint &p ) 00031 { 00032 00033 mPosition = p.mPosition; 00034 for ( Int_t i = 0; i < 4; i++ ) 00035 mEnergy[i] = p.mEnergy[i]; 00036 mFraction = p.mFraction; 00037 mTowers = p.mTowers; 00038 mWeights = p.mWeights; 00039 mSmdClusters[0] = p.mSmdClusters[0]; 00040 mSmdClusters[1] = p.mSmdClusters[1]; 00041 mEmcPoint = p.mEmcPoint; 00042 mRelatives = p.mRelatives; 00043 00044 mSector = p.mSector; 00045 mSigma = p.mSigma; 00046 mU = p.mU; 00047 mV = p.mV; 00048 00049 mResidueU = p.mResidueU; 00050 mResidueV = p.mResidueV; 00051 00052 } 00053 00054 // ---------------------------------------------------------------------------- 00055 00056 /* 00057 void StEEmcIUPoint::print() 00058 { 00059 std::cout << " X=" << mPosition.X() 00060 << " Y=" << mPosition.Y() 00061 << " energy=" << mEnergy 00062 << " frac=" << mFraction 00063 << std::endl; 00064 } 00065 */ 00066 00067 // ---------------------------------------------------------------------------- 00068 00069 StEmcPoint *StEEmcIUPoint::stemc() 00070 { 00071 00072 StThreeVectorF position( mPosition.X(), mPosition.Y(), mPosition.Z() ); 00073 00074 mEmcPoint = new StEmcPoint(); 00075 mEmcPoint->setEnergy( energy() ); 00076 mEmcPoint->setPosition( position ); 00077 00080 StThreeVectorF error( 1.0, 1.0, 1.0 ); 00081 mEmcPoint->setPositionError( error ); 00082 00086 mEmcPoint->addCluster( kEndcapEmcTowerId, 0 ); 00087 00088 mEmcPoint->addCluster( kEndcapSmdUStripId, mSmdClusters[0].stemc() ); 00089 mEmcPoint->addCluster( kEndcapSmdVStripId, mSmdClusters[1].stemc() ); 00090 00091 return mEmcPoint; 00092 00093 } 00094 00095 00096 00097 00098 00099 // -------------------------------------------------------------------------- 00100 Bool_t StEEmcIUPoint::chiSquare( const StEEmcIUPoint &other ) const 00101 { 00102 00105 00106 Float_t myChi2 = ( (mSmdClusters[0].energy() - mSmdClusters[1].energy())/(mSmdClusters[0].energy() + mSmdClusters[1].energy()) ); 00107 myChi2 *= myChi2; 00108 Float_t otherChi2 = ( (other.mSmdClusters[0].energy() - other.mSmdClusters[1].energy())/(other.mSmdClusters[0].energy() + other.mSmdClusters[1].energy()) ); 00109 otherChi2 *= otherChi2; 00110 00111 return myChi2 < otherChi2; 00112 00113 } 00114 00115 00116 // ---------------------------------------------------------------------------- 00117 00118 void StEEmcIUPoint::print() 00119 { 00120 00121 std::cout << "---------------------------------" << std::endl; 00122 std::cout << " X=" << mPosition.X() 00123 << " Y=" << mPosition.Y() 00124 << " energy=" << mEnergy[0] 00125 << " frac=" << mFraction 00126 << std::endl; 00127 00128 for ( UInt_t i=0; i<mTowers.size(); i++ ) 00129 mTowers[i].print(); 00130 00131 std::cout << "ucluster:" << std::endl; 00132 mSmdClusters[0].print(); 00133 std::cout << "vcluster:" << std::endl; 00134 mSmdClusters[1].print(); 00135 00136 } 00137 00138
1.5.9