@@ -64,7 +64,9 @@ JetScapeWriterFinalStateStream<T>::JetScapeWriterFinalStateStream(string m_file_
6464 particles{},
6565 writeCentrality{false },
6666 writePtHat{false },
67- particleStatusToSkip{}
67+ particleStatusToSkip{},
68+ output_file{},
69+ headerVersion{2 }
6870{
6971 SetOutputFileName (m_file_name_out);
7072}
@@ -130,7 +132,14 @@ template <class T> void JetScapeWriterFinalStateStream<T>::WriteEvent() {
130132 << " \t " << " Event\t " << GetCurrentEvent () + 1 // +1 to index the event count from 1
131133 << " \t " << " weight\t " << std::setprecision (15 ) << GetHeader ().GetEventWeight () << std::setprecision (6 )
132134 << " \t " << " EPangle\t " << (GetHeader ().GetEventPlaneAngle () > -999 ? GetHeader ().GetEventPlaneAngle () : 0 )
133- << " \t " << " N_" << GetName () << " \t " << ipart
135+ << " \t " << " N_" << GetName () << " \t " << ipart;
136+ if (headerVersion == 3 ) {
137+ output_file
138+ << " \t " << " vertex_x\t " << GetHeader ().GetVertexX ()
139+ << " \t " << " vertex_y\t " << GetHeader ().GetVertexY ()
140+ << " \t " << " vertex_z\t " << GetHeader ().GetVertexZ ();
141+ }
142+ output_file
134143 << centrality_text
135144 << pt_hat_text
136145 << " \n " ;
@@ -161,14 +170,23 @@ template <class T> void JetScapeWriterFinalStateStream<T>::InitTask() {
161170 particleStatusToSkip.erase (std::remove (particleStatusToSkip.begin (), particleStatusToSkip.end (), -9999 ), particleStatusToSkip.end ());
162171 }
163172 if (GetActive ()) {
164- JSINFO << " JetScape Final State " << name << " Stream Writer initialized with output file = "
173+ // We need the header version to determine how to write.
174+ // NOTE: Don't require the version. If not specified, defaults to v2.
175+ int result = GetXMLElementInt ({" Writer" , (std::string (" FinalState" ) + name).c_str (), " headerVersion" }, false );
176+ // If it fails to retrieve the value, it will return 0. The header version must be >= 2,
177+ // so only assign if the value is actually set.
178+ if (result) {
179+ headerVersion = static_cast <unsigned int >(result);
180+ }
181+
182+ JSINFO << " JetScape Final State " << name << " Stream Writer v" << headerVersion << " initialized with output file = "
165183 << GetOutputFileName ();
166184 output_file.open (GetOutputFileName ().c_str ());
167185 // NOTE: This header will only be printed once at the beginning on the file.
168186 output_file << " #"
169187 // The specifics the version number. For consistency in parsing, the string
170188 // will always be "v<number>"
171- << " \t " << " JETSCAPE_FINAL_STATE\t " << " v2 "
189+ << " \t " << " JETSCAPE_FINAL_STATE\t " << " v " << headerVersion
172190 << " \t " << " |" // As a delimiter
173191 << " \t " << " N"
174192 << " \t " << " pid"
0 commit comments