///////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Component: CalDataNtuplizer // Purpose: Puts contents of a CalData in a Heptuple block // // Created: ~07/06/01 Pierre Savard // // History: /////////////////////////////////////////////////////////////////////////////////////////////////////////// #include "CalorObjects/CalDataNtuplizer.hh" #include "CalorObjects/CalData.hh" #include "HepTuple/HepNtuple.h" CalDataNtuplizer::CalDataNtuplizer(HepNtuple* ntuple, std::string branch_name) : _ntuple(ntuple), _branch_name(branch_name) {} bool CalDataNtuplizer::initialize(double lvl) { _lvl = lvl; _ntuple->columnAt(_branch_name + "::ntower",&_ntowers,(int4)0); _ntuple->span(_branch_name + "::ntower",0,MAXTOWERS); if(_lvl>=1){ _ntuple->columnArray(_branch_name + "::ie",1,(int4)0).dimension(MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::ip",1,(int4)0).dimension(MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::tp",1,(int4)0).dimension(MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::em",1,(float4)0.0).dimension(MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::had",1,(float4)0.0).dimension(MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::nhit",1,(int4)0.0).dimension(MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::t0",1,(int4)0.0).dimension(MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::t1",1,(int4)0.0).dimension(MAXTOWERS).index("ntower"); } if(_lvl>=2){ } if(_lvl>=3){ _ntuple->columnArray(_branch_name + "::cemE",1,(float4)0.0).dimension(2,MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::chaE",1,(float4)0.0).dimension(2,MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::whaE",1,(float4)0.0).dimension(2,MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::pemE",1,(float4)0.0).dimension(2,MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::phaE",1,(float4)0.0).dimension(2,MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::pprE",1,(float4)0.0).dimension(2,MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::cemT",1,(int4)0.0).dimension(2,MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::pemT",1,(int4)0.0).dimension(2,MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::chaT",1,(int4)0.0).dimension(2,MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::whaT",1,(int4)0.0).dimension(2,MAXTOWERS).index("ntower"); _ntuple->columnArray(_branch_name + "::phaT",1,(int4)0.0).dimension(2,MAXTOWERS).index("ntower"); } return true; } bool CalDataNtuplizer::capture(const CalData& object) { _ntowers = object.size(); int itower = 0; DetList caloList; for(CalData::ConstIterator tower= object.begin(); tower != object.end(); ++tower){ _ieta[itower] = tower->iEta(); _iphi[itower] = tower->iPhi(); _type[itower] = tower->myType(); _emEnergy[itower] = tower->emEnergy(); _hadEnergy[itower] = tower->hadEnergy(); tower->detectors(caloList); for(DetList::iterator calIter = caloList.begin(); calIter != caloList.end(); ++calIter){ CellKey key(tower->iEta(),tower->iPhi(),*calIter); _tdcNhits[itower] = tower->nTDCHits(key); if (tower->nTDCHits(key)>0) { _tdcTime0[itower] = tower->time(key,0); } if (tower->nTDCHits(key)>1) { _tdcTime1[itower] = tower->time(key,1); } // now store pmt energies of all systems if((*calIter) == CEM){ _cemE[itower][0]=tower->pmtEnergy(key, 0) ; _cemE[itower][1]=tower->pmtEnergy(key, 1) ; if (tower->nTDCHits(key)>0) _cemT[itower][0]=tower->time(key,0); if (tower->nTDCHits(key)>1) _cemT[itower][1]=tower->time(key,1); } if((*calIter) == CHA){ _chaE[itower][0]=tower->pmtEnergy(key, 0) ; _chaE[itower][1]=tower->pmtEnergy(key, 1) ; if (tower->nTDCHits(key)>0) _chaT[itower][0]=tower->time(key,0); if (tower->nTDCHits(key)>1) _chaT[itower][1]=tower->time(key,1); } if((*calIter) == WHA){ _whaE[itower][0]=tower->pmtEnergy(key, 0) ; _whaE[itower][1]=tower->pmtEnergy(key, 1) ; if (tower->nTDCHits(key)>0) _whaT[itower][0]=tower->time(key,0); if (tower->nTDCHits(key)>1) _whaT[itower][1]=tower->time(key,1); } if((*calIter) == PEM){ _pemE[itower][0]=tower->pmtEnergy(key, 0) ; _pemE[itower][1]=tower->pmtEnergy(key, 1) ; if (tower->nTDCHits(key)>0) _pemT[itower][0]=tower->time(key,0); if (tower->nTDCHits(key)>1) _pemT[itower][1]=tower->time(key,1); } if((*calIter) == PHA){ _phaE[itower][0]=tower->pmtEnergy(key, 0) ; _phaE[itower][1]=tower->pmtEnergy(key, 1) ; if (tower->nTDCHits(key)>0) _phaT[itower][0]=tower->time(key,0); if (tower->nTDCHits(key)>1) _phaT[itower][1]=tower->time(key,1); } if((*calIter) == PPR){ _pprE[itower][0]=tower->pmtEnergy(key, 0) ; _pprE[itower][1]=tower->pmtEnergy(key, 1) ; } } itower++; } _ntuple->clearDataBlock(_branch_name ); _ntuple->capture(_branch_name + "::ntower",_ntowers); if(_lvl>=1){ _ntuple->capture(_branch_name + "::ie",&_ieta[0]); _ntuple->capture(_branch_name + "::ip",&_iphi[0]); _ntuple->capture(_branch_name + "::tp",&_type[0]); _ntuple->capture(_branch_name + "::em",&_emEnergy[0]); _ntuple->capture(_branch_name + "::had",&_hadEnergy[0]); _ntuple->capture(_branch_name + "::nhit",&_tdcNhits[0]); _ntuple->capture(_branch_name + "::t0",&_tdcTime0[0]); _ntuple->capture(_branch_name + "::t1",&_tdcTime1[0]); } if(_lvl>=2){ } if(_lvl>=3){ _ntuple->capture(_branch_name + "::cemE",&_cemE[0][0]); _ntuple->capture(_branch_name + "::chaE",&_chaE[0][0]); _ntuple->capture(_branch_name + "::whaE",&_whaE[0][0]); _ntuple->capture(_branch_name + "::pemE",&_pemE[0][0]); _ntuple->capture(_branch_name + "::phaE",&_phaE[0][0]); _ntuple->capture(_branch_name + "::pprE",&_pprE[0][0]); _ntuple->capture(_branch_name + "::cemT",&_cemT[0][0]); _ntuple->capture(_branch_name + "::pemT",&_pemT[0][0]); _ntuple->capture(_branch_name + "::chaT",&_chaT[0][0]); _ntuple->capture(_branch_name + "::whaT",&_whaT[0][0]); _ntuple->capture(_branch_name + "::phaT",&_phaT[0][0]); } _ntuple->captureBlock( _branch_name ); return true; }