45 UInt_t tagData0 = m_tagFilterSvc->getTagData0();
46 UInt_t tagData1 = m_tagFilterSvc->getTagData1();
47 UInt_t tagData2 = m_tagFilterSvc->getTagData2();
48 UInt_t tagData3 = m_tagFilterSvc->getTagData3();
49 UInt_t tagData4 = m_tagFilterSvc->getTagData4();
55 int dstDataType = m_tagFilterSvc->getDstDataType();
56 if ( ( dstDataType == 2 || dstDataType == 4 ) && ( tagData0 == 3 ) )
57 { cmap[tagData0 + tagData1].push_back( m_evtNum ); }
58 else cmap[tagData0].push_back( m_evtNum );
61 if ( m_dstDataType == 1 )
63 evtmap[m_evtNum].push_back( tagData0 );
64 evtmap[m_evtNum].push_back( tagData1 );
65 evtmap[m_evtNum].push_back( tagData2 );
66 evtmap[m_evtNum].push_back( tagData3 );
67 evtmap[m_evtNum].push_back( tagData4 );
69 else if ( ( m_dstDataType == 2 ) || ( m_dstDataType == 3 ) || ( m_dstDataType == 4 ) )
71 UInt_t tagData5 = m_tagFilterSvc->getTagData5();
72 UInt_t tagData6 = m_tagFilterSvc->getTagData6();
73 UInt_t tagData7 = m_tagFilterSvc->getTagData7();
74 UInt_t tagData8 = m_tagFilterSvc->getTagData8();
75 UInt_t tagData9 = m_tagFilterSvc->getTagData9();
76 evtmap[m_evtNum].push_back( tagData1 );
77 evtmap[m_evtNum].push_back( tagData2 );
78 evtmap[m_evtNum].push_back( tagData3 );
79 evtmap[m_evtNum].push_back( tagData4 );
80 evtmap[m_evtNum].push_back( tagData5 );
81 evtmap[m_evtNum].push_back( tagData6 );
82 evtmap[m_evtNum].push_back( tagData7 );
83 evtmap[m_evtNum].push_back( tagData8 );
84 evtmap[m_evtNum].push_back( tagData9 );
89 return StatusCode::SUCCESS;
94 MsgStream log(
msgSvc(), name() );
98 auto iProp = service<IProperty>(
"EventCnvSvc" );
101 iProp->getProperty(
"digiRootInputFile", fn ).ignore();
102 std::string::size_type
p1 = fn.find(
'\'' ) + 1;
103 std::string::size_type
p2 = fn.find(
'\'',
p1 );
104 fn = fn.substr(
p1,
p2 -
p1 );
105 std::cout <<
"input dst file name: " << fn << std::endl;
108 TFile*
f1 = TFile::Open( fn.c_str(),
"READ" );
109 TFile* f2 = TFile::Open( m_outputFile.c_str(),
"RECREATE" );
110 TTree* t1 = (TTree*)
f1->Get(
"Event" );
112 log << MSG::INFO <<
"in finalize()" << endmsg;
113 TTree* jt1 = (TTree*)(
f1->Get(
"JobInfoTree" ) );
114 TTree* jt2 = jt1->CloneTree();
115 TTree* t0 =
new TTree(
"Metadata",
"" );
116 Int_t mode = -1, begin = 0, end = 0;
117 t0->Branch(
"mode", &mode,
"mode/I" );
118 t0->Branch(
"begin", &begin,
"begin/I" );
119 t0->Branch(
"end", &end,
"end/I" );
121 for ( std::map<
int, std::vector<long int>>::iterator it = cmap.begin(); it != cmap.end();
126 end += ( it->second ).size();
127 std::cout <<
"mode: " << mode <<
" begin: " << begin <<
" end: " << end << std::endl;
131 TTree* t2 = t1->CloneTree( 0 );
132 Int_t nEvents = t1->GetEntries();
133 std::cout <<
"Total nEvents: " << nEvents << std::endl;
134 Int_t origEntry = 0, currEntry = 0;
135 UInt_t tagData0, tagData1, tagData2, tagData3, tagData4;
136 UInt_t tagData5, tagData6, tagData7, tagData8;
137 TTree* t3 =
new TTree(
"Entries",
"" );
138 t3->Branch(
"origEntry", &origEntry,
"origEntry/I" );
139 t3->Branch(
"currEntry", &currEntry,
"currEntry/I" );
140 t3->Branch(
"tagData0", &tagData0,
"tagData0/i" );
141 t3->Branch(
"tagData1", &tagData1,
"tagData1/i" );
142 t3->Branch(
"tagData2", &tagData2,
"tagData2/i" );
143 t3->Branch(
"tagData3", &tagData3,
"tagData3/i" );
144 t3->Branch(
"tagData4", &tagData4,
"tagData4/i" );
145 if ( ( m_dstDataType == 2 ) || ( m_dstDataType == 3 ) || ( m_dstDataType == 4 ) )
147 t3->Branch(
"tagData5", &tagData5,
"tagData5/i" );
148 t3->Branch(
"tagData6", &tagData6,
"tagData6/i" );
149 t3->Branch(
"tagData7", &tagData7,
"tagData7/i" );
150 t3->Branch(
"tagData8", &tagData8,
"tagData8/i" );
153 for ( std::map<
int, std::vector<long int>>::iterator it = cmap.begin(); it != cmap.end();
156 int nNt = it->second.size();
157 std::cout <<
"Writing " << nNt <<
"\t events with " << it->first <<
" TagData0..."
159 for (
int i = 0; i < nNt; ++i )
161 origEntry = ( it->second )[i];
162 t1->GetEntry( origEntry );
163 tagData0 = ( evtmap[origEntry] )[0];
164 tagData1 = ( evtmap[origEntry] )[1];
165 tagData2 = ( evtmap[origEntry] )[2];
166 tagData3 = ( evtmap[origEntry] )[3];
167 tagData4 = ( evtmap[origEntry] )[4];
168 if ( ( m_dstDataType == 2 ) || ( m_dstDataType == 3 ) || ( m_dstDataType == 4 ) )
170 tagData5 = ( evtmap[origEntry] )[5];
171 tagData6 = ( evtmap[origEntry] )[6];
172 tagData7 = ( evtmap[origEntry] )[7];
173 tagData8 = ( evtmap[origEntry] )[8];
179 ( it->second ).clear();
184 return StatusCode::SUCCESS;