#include <FWCore/Framework/interface/EventSetupRecordImpl.h>
Description: Base class for all Records in an EventSetup. Holds data with the same lifetime.
Usage: This class contains the Proxies that make up a given Record. It is designed to be reused time after time, rather than it being destroyed and a new one created every time a new Record is required. Proxies can only be added by the EventSetupRecordProvider class which uses the 'add' function to do this. The reason for this is that the EventSetupRecordProvider/DataProxyProvider pair are responsible for "invalidating" Proxies in a Record. When a Record becomes "invalid" the EventSetupRecordProvider must invalidate all the Proxies which it does using the DataProxyProvider.
When the set of Proxies for a Records changes, i.e. a DataProxyProvider is added of removed from the system, then the Proxies in a Record need to be changes as appropriate. In this design it was decided the easiest way to achieve this was to erase all Proxies in a Record.
It is important for the management of the Records that each Record know the ValidityInterval that represents the time over which its data is valid. The ValidityInterval is set by its EventSetupRecordProvider using the 'set' function. This quantity can be recovered through the 'validityInterval' method.
For a Proxy to be able to derive its contents from the EventSetup, it must be able to access any Proxy (and thus any Record) in the EventSetup. The 'make' function of a Proxy provides its containing Record as one of its arguments. To be able to access the rest of the EventSetup, it is necessary for a Record to be able to access its containing EventSetup. This task is handled by the 'eventSetup' function. The EventSetup is responsible for managing this using the 'setEventSetup' and 'clearEventSetup' functions.