ArgoNeuT uses the existing lifetime and temperature if query of database fails
Ivan Lepetic reported a problem that revealed an issue with the current code. util::LArPropertiesServiceArgoNeuT::ElectronLifetime() returns the existing lifetime value if the query of database failed. This is fine if there is only one run in the job. But if there are multiple runs, the lifetime from a previous run will be returned. This has caused confusion and inconsistent results. I have modified code to use the default lifetime and temperature values from fcl file if the database query failed. This is implemented in lardata:eb35d7d2c662a0bd48221ba40890d4c6e111b759.
#1 Updated by Gianluca Petrillo about 3 years ago
Is this going to help on the axis of confusion? If the query may randomly fail (like for network connections) you get randomly either the correct or the default lifetime.
If it is important to have access to the correct lifetime, the natural answer to a failed query is to retry and eventually to abort the job.
#2 Updated by Tingjun Yang about 3 years ago
The most common failure mode is that the entry for a particular run is not in the database. Retry the query does not help in this case. Before the function would return lifetime from another run if the query was successful before in the same job, which is random. After the changes, it will always return the default value.
The proper fix is to fill the holes in the database. It is not clear we have the manpower for this job.