97 {
98 if ( m_vec.empty() )
99 {
100
101 m_root->Write();
102 return StatusCode::SUCCESS;
103 }
104
105 std::sort( m_vec.begin(), m_vec.end() );
106 m_vec.erase( std::unique( m_vec.begin(), m_vec.end() ), m_vec.end() );
107
108 unsigned long _interval = m_interval * 2000;
109
110
111 {
112 unsigned long tmp = m_vec.front();
113 for ( int j = m_nfill; j > 0; --j )
114 {
115 if ( tmp <= _interval * j ) continue;
116 m_flag = 10 + j;
117 m_ets2 = tmp - _interval * j;
118 m_tree->Fill();
119 }
120 m_flag = m_1stFlag;
121 m_ets2 = tmp;
122 m_tree->Fill();
123 }
124 for ( unsigned int i = 1; i < m_vec.size(); ++i )
125 {
126 unsigned long diff = m_vec[i] - m_vec[i - 1];
127 bool _1stEvtInTopUp = false;
128
129 if ( diff > _interval * ( m_nfill + 1 ) * 2 + 10000 )
130 {
131 _1stEvtInTopUp = true;
132 for ( int j = 1; j < m_nfill + 1; ++j )
133 {
134 m_flag = 20 + j;
135 m_ets2 = m_vec[i - 1] + _interval * j;
136 m_tree->Fill();
137 }
138 for ( int j = m_nfill; j > 0; --j )
139 {
140 m_flag = 10 + j;
141 m_ets2 = m_vec[i] - _interval * j;
142 m_tree->Fill();
143 }
144 }
145 else if ( diff > _interval + 10000 )
146 {
147 for ( int j = 1; j < 10; ++j )
148 {
149 m_flag = 1;
150 m_ets2 = m_vec[i - 1] + _interval * j;
151 if ( m_ets2 >= m_vec[i] || m_vec[i] - m_ets2 < 10000 )
152 {
153 break;
154 }
155 m_tree->Fill();
156 }
157 }
158
159 m_flag = _1stEvtInTopUp ? m_1stFlag : 0;
160 m_ets2 = m_vec[i];
161 m_tree->Fill();
162 }
163 {
164 unsigned long tmp = m_vec.back();
165 for ( int j = 1; j < m_nfill + 1; ++j )
166 {
167 m_flag = 20 + j;
168 m_ets2 = tmp + _interval * j;
169 m_tree->Fill();
170 }
171 }
172
173
174 m_root->Write();
175
176 return StatusCode::SUCCESS;
177}