82 if( (dstDataType==2||dstDataType==4) && (tagData0==3) )
84 cmap[tagData0+tagData1].push_back(m_evtNum);
87 cmap[tagData0].push_back(m_evtNum);
90 if (m_dstDataType==1) {
91 evtmap[m_evtNum].push_back(tagData0);
92 evtmap[m_evtNum].push_back(tagData1);
93 evtmap[m_evtNum].push_back(tagData2);
94 evtmap[m_evtNum].push_back(tagData3);
95 evtmap[m_evtNum].push_back(tagData4);
96 }
else if ( (m_dstDataType==2) || (m_dstDataType==3) || (m_dstDataType==4) ) {
102 evtmap[m_evtNum].push_back(tagData1);
103 evtmap[m_evtNum].push_back(tagData2);
104 evtmap[m_evtNum].push_back(tagData3);
105 evtmap[m_evtNum].push_back(tagData4);
106 evtmap[m_evtNum].push_back(tagData5);
107 evtmap[m_evtNum].push_back(tagData6);
108 evtmap[m_evtNum].push_back(tagData7);
109 evtmap[m_evtNum].push_back(tagData8);
110 evtmap[m_evtNum].push_back(tagData9);
118 MsgStream log(
msgSvc(), name());
121 SmartIF<IJobOptionsSvc> iSvc(Gaudi::svcLocator()->service(
"JobOptionsSvc"));
122 if ( iSvc.isValid() ) {
123 const std::vector<const Property*>* ps = iSvc->getProperties(
"EventCnvSvc");
124 std::vector<const Property*>::const_iterator it, end = ps->end();
125 for ( it = ps->begin(); it != end; ++it ) {
126 if ( (*it)->name() ==
"digiRootInputFile" ) {
127 std::string flist=(*it)->toString();
128 std::string::size_type
p1 = flist.find(
'"') + 1;
129 std::string::size_type
p2 = flist.find(
'"',
p1);
130 fn = flist.substr(
p1,
p2-
p1);
131 std::cout<<
"input dst file name: "<<fn<<std::endl;
135 TFile*
f1 = TFile::Open(fn.c_str(),
"READ");
136 TFile* f2 = TFile::Open(m_outputFile.c_str(),
"RECREATE");
137 TTree* t1 = (TTree*)
f1->Get(
"Event");
139 log << MSG::INFO <<
"in finalize()" << endmsg;
140 TTree* jt1 = (TTree*)(
f1->Get(
"JobInfoTree"));
141 TTree* jt2 = jt1->CloneTree();
142 TTree* t0 =
new TTree(
"Metadata",
"");
143 Int_t mode = -1, begin = 0, end = 0;
144 t0->Branch(
"mode", &mode,
"mode/I");
145 t0->Branch(
"begin", &begin,
"begin/I");
146 t0->Branch(
"end", &end,
"end/I");
148 for ( std::map<
int, std::vector<long int> >::iterator it = cmap.begin(); it != cmap.end(); ++it ) {
151 end += (it->second).size();
152 std::cout<<
"mode: "<<mode<<
" begin: "<<begin<<
" end: "<<end<<std::endl;
156 TTree* t2 = t1->CloneTree(0);
157 Int_t nEvents = t1->GetEntries();
158 std::cout<<
"Total nEvents: "<<nEvents<<std::endl;
159 Int_t origEntry=0, currEntry=0;
160 UInt_t tagData0, tagData1, tagData2, tagData3, tagData4;
161 UInt_t tagData5, tagData6, tagData7, tagData8;
162 TTree* t3 =
new TTree(
"Entries",
"");
163 t3->Branch(
"origEntry", &origEntry,
"origEntry/I");
164 t3->Branch(
"currEntry", &currEntry,
"currEntry/I");
165 t3->Branch(
"tagData0", &tagData0,
"tagData0/i");
166 t3->Branch(
"tagData1", &tagData1,
"tagData1/i");
167 t3->Branch(
"tagData2", &tagData2,
"tagData2/i");
168 t3->Branch(
"tagData3", &tagData3,
"tagData3/i");
169 t3->Branch(
"tagData4", &tagData4,
"tagData4/i");
170 if ( (m_dstDataType==2) || (m_dstDataType==3) || (m_dstDataType==4) ) {
171 t3->Branch(
"tagData5", &tagData5,
"tagData5/i");
172 t3->Branch(
"tagData6", &tagData6,
"tagData6/i");
173 t3->Branch(
"tagData7", &tagData7,
"tagData7/i");
174 t3->Branch(
"tagData8", &tagData8,
"tagData8/i");
177 for ( std::map<
int, std::vector<long int> >::iterator it = cmap.begin(); it != cmap.end(); ++it ) {
178 int nNt = it->second.size();
179 std::cout <<
"Writing " << nNt <<
"\t events with " << it->first <<
" TagData0..." << std::endl;
180 for (
int i = 0; i < nNt; ++i ) {
181 origEntry=(it->second)[i];
182 t1->GetEntry(origEntry);
183 tagData0=(evtmap[origEntry])[0];
184 tagData1=(evtmap[origEntry])[1];
185 tagData2=(evtmap[origEntry])[2];
186 tagData3=(evtmap[origEntry])[3];
187 tagData4=(evtmap[origEntry])[4];
188 if ( (m_dstDataType==2) || (m_dstDataType==3) || (m_dstDataType==4) ) {
189 tagData5=(evtmap[origEntry])[5];
190 tagData6=(evtmap[origEntry])[6];
191 tagData7=(evtmap[origEntry])[7];
192 tagData8=(evtmap[origEntry])[8];
198 (it->second).clear();
203 return StatusCode::SUCCESS;