+//_____________________________________________________________________
+void AliFMDBaseDA::Rotate(const char* base, int max) const
+{
+ //
+ // Rotate a set of files. base is the basic name of the files.
+ // If the file base.max exists it is removed.
+ // If the file base.n exists (where n < max) it is renamed to
+ // base.(n-1).
+ // If the file base exists, it is renamed to base.1
+ //
+ // Parameters:
+ // base Base name of the files
+ // max Maximum number to keep (minus one for the current).
+
+ // Note: TSystem::AccessPathName returns false if the condition is
+ // fulfilled!
+
+ // Check if we have base.max, and if so, remove it.
+ TString testName(Form("%s.%d", base, max));
+ if (!gSystem->AccessPathName(testName.Data()))
+ gSystem->Unlink(testName.Data());
+
+ // Loop down from max-1 to 1 and move files
+ for (int i = max-1; i >= 1; i--) {
+ testName = Form("%s.%d", base, i);
+ if (!gSystem->AccessPathName(testName.Data())) {
+ TString newName(Form("%s.%d", base, i+1));
+ gSystem->Rename(testName.Data(), newName.Data());
+ }
+ }
+
+ // If we have the file base, rename it to base.1
+ testName = Form("%s", base);
+ if (!gSystem->AccessPathName(testName.Data())){
+ TString newName(Form("%s.%d", base, 1));
+ gSystem->Rename(testName.Data(), newName.Data());
+ }
+}