00001
00002 #include "StjTowerEnergyListWriter.h"
00003
00004 #include <TDirectory.h>
00005 #include <TTree.h>
00006
00007 #include <iostream>
00008
00009 ClassImp(StjTowerEnergyListWriter)
00010
00011 using namespace std;
00012
00013 StjTowerEnergyListWriter::StjTowerEnergyListWriter(const char* treeName, TDirectory* file)
00014 : _file(file)
00015 {
00016 _file->cd();
00017 _tree = new TTree(treeName, treeName);
00018 _tree->SetAutoSave(kMaxLong64);
00019 _tree->SetMaxTreeSize(kMaxLong64);
00020
00021 _tree->Branch("eventId" , &_eventId , "eventId/I" );
00022 _tree->Branch("nTowers" , &_nTowers , "nTowers/I" );
00023 _tree->Branch("energy" , _energy , "energy[nTowers]/D" );
00024 _tree->Branch("towerId" , _towerId , "towerId[nTowers]/I" );
00025 _tree->Branch("towerEta" , _towerEta , "towerEta[nTowers]/D" );
00026 _tree->Branch("towerPhi" , _towerPhi , "towerPhi[nTowers]/D" );
00027 _tree->Branch("adc" , _adc , "adc[nTowers]/i" );
00028 _tree->Branch("pedestal" , _pedestal , "pedestal[nTowers]/D" );
00029 _tree->Branch("rms" , _rms , "rms[nTowers]/D" );
00030 _tree->Branch("towerR" , _towerR , "towerR[nTowers]/D" );
00031 _tree->Branch("vertexX" , &_vertexX , "vertexX/D" );
00032 _tree->Branch("vertexY" , &_vertexY , "vertexY/D" );
00033 _tree->Branch("vertexZ" , &_vertexZ , "vertexZ/D" );
00034 _tree->Branch("status" , _status , "status[nTowers]/I" );
00035 _tree->Branch("detectorId" , &_detectorId , "detectorId/I" );
00036 _tree->Branch("runNumber" , &_runNumber , "runNumber/I" );
00037 }
00038
00039 void StjTowerEnergyListWriter::Fill(const StjTowerEnergyList& energyList)
00040 {
00041 if(energyList.empty()) return;
00042
00043 _runNumber = energyList[0].runNumber;
00044 _eventId = energyList[0].eventId;
00045 _detectorId = energyList[0].detectorId;
00046
00047 _vertexX = energyList[0].vertexX;
00048 _vertexY = energyList[0].vertexY;
00049 _vertexZ = energyList[0].vertexZ;
00050
00051 _nTowers = energyList.size();
00052 for(int i = 0; i < _nTowers; ++i) {
00053 const StjTowerEnergy& tower = energyList[i];
00054 _towerId[i] = tower.towerId;
00055 _towerR[i] = tower.towerR;
00056 _towerEta[i] = tower.towerEta;
00057 _towerPhi[i] = tower.towerPhi;
00058 _energy[i] = tower.energy;
00059 _adc[i] = tower.adc;
00060 _pedestal[i] = tower.pedestal;
00061 _rms[i] = tower.rms;
00062 _status[i] = tower.status;
00063 }
00064
00065 _tree->Fill();
00066 }
00067
00068 void StjTowerEnergyListWriter::Finish()
00069 {
00070 _tree->BuildIndex("runNumber", "eventId");
00071 }