00001 #include "StEEmcPointTreeMaker.h"
00002 #include "StEEmcA2EMaker.h"
00003 #include "StEEmcClusterMaker.h"
00004 #include "StEEmcMixEvent.h"
00005
00006 ClassImp(StEEmcPointTreeMaker);
00007
00008
00009 StEEmcPointTreeMaker::StEEmcPointTreeMaker( const Char_t *n):StEEmcPointMaker(n)
00010 {
00011 mFilename="NONE";
00012 mMixEvent=new StEEmcMixEvent();
00013 mFile=0;
00014 }
00015
00016
00017 Int_t StEEmcPointTreeMaker::Init()
00018 {
00019
00020 if ( !mFilename.Contains("NONE") )
00021 {
00022 mFile = new TFile(mFilename,"recreate");
00023 }
00024
00025 mTree=new TTree("mTree","Point maker tree");
00026 mTree->Branch("mEEmcPoints","StEEmcMixEvent",&mMixEvent);
00027
00028 return StEEmcPointMaker::Init();
00029 }
00030
00031
00032 Int_t StEEmcPointTreeMaker::Make()
00033 {
00034 Int_t stat=StEEmcPointMaker::Make();
00035 if ( stat != kStOK ) return stat;
00036
00038 for ( UInt_t i = 0; i < mPoints.size(); i++ )
00039 mMixEvent -> addPoint ( mPoints[i] );
00040
00042 for ( Int_t sec=0; sec<12; sec++ )
00043 for ( Int_t pln=0; pln<2; pln++ )
00044 for ( Int_t cl=0;cl<mEEclusters->numberOfSmdClusters(sec,pln); cl++ )
00045 {
00046 mMixEvent->addCluster( mEEclusters->smdcluster(sec,pln,cl));
00047 }
00048
00050 StEEmcTowerVec_t towers=mEEanalysis->towers();
00051 Float_t etotal=0.;
00052 for ( UInt_t i=0; i < towers.size(); i++ )
00053 {
00054
00055 etotal+= towers[i].energy();
00056 }
00057 mMixEvent->setTotalEnergy(etotal);
00058 mMixEvent->setEnergySeen(energySeen());
00059
00060 for ( Int_t i=0;i<12; i++ ) {
00061 mMixEvent->setTotalEnergyU( i,mEEanalysis->energy(i,4) );
00062 mMixEvent->setTotalEnergyV( i,mEEanalysis->energy(i,5) );
00063 }
00064
00066 mTree -> Fill();
00067
00068 return kStOK;
00069
00070 }
00071
00072
00073 void StEEmcPointTreeMaker::Clear(Option_t *o)
00074 {
00075 mMixEvent->Clear();
00076 StEEmcPointMaker::Clear();
00077 }
00078
00079
00080 Int_t StEEmcPointTreeMaker::Finish()
00081 {
00082 if ( mFile )
00083 {
00084 std::cout << "StEEmcPointTreeMaker::Finish()" << std::endl;
00085 mFile->Write();
00086 }
00087
00088 return kStOK;
00089 }