Setting CODA version for files filtered with EVIO 4
The decoding depends on the CODA version, 2 and 3 are quite different. Unfortunately, there is no easy way to tell what CODA version was used, except from the structure of the data, e.g. the Prestart event looks different. The easiest rule is that all CODA 2 files used EVIO <= 3 and all CODA 3 files used EVIO >= 4. If the files were generated by CODA ! And its easy to tell what EVIO version was used. This was done (see issue 274), but there was a Time Bomb. Steve Wood took some CODA 2 data files, filtered them, and wrote them out with EVIO 4, which makes sense since its a modern version of EVIO. Unfortunately, this led to segmentation faults with Podd. I'm working on this now. When the segfault occurs on his files, I warn the user to run->SetCodaVersion(2) in the analyzer script. It's not great, but better than nothing. That public "Set" method seemed straightforward, except that the initial THaRun object is deleted in the analyzer and a new THaRun is made, so the "Set" state is not propagated. (Naively, I thought one CODA file is one run, but I guess not and I'm sure there's a good reason.) I'm working through this now. Basically we need a public "SetCodaVersion" method which over-rides the version discovered from the data file, and the version needs to persist through the complicated life of objects in the analyzer.