In mapping:
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 30 Nov 2009 16:26:54 +0000 (16:26 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 30 Nov 2009 16:26:54 +0000 (16:26 +0000)
Adding a possibility to create non-valid mapping objects of minimum size. These minimum size objects will replace the old, not used ones in OCDB in order to reduce their size, as the ALICE policy does not allow to remove objects from OCDB.
(Ivana)

12 files changed:
MUON/mapping/AliMpCDB.cxx
MUON/mapping/AliMpCDB.h
MUON/mapping/AliMpDDLStore.cxx
MUON/mapping/AliMpDDLStore.h
MUON/mapping/AliMpExMap.cxx
MUON/mapping/AliMpExMap.h
MUON/mapping/AliMpManuStore.cxx
MUON/mapping/AliMpManuStore.h
MUON/mapping/AliMpSegmentation.cxx
MUON/mapping/AliMpSegmentation.h
MUON/mapping/AliMpStringObjMap.cxx
MUON/mapping/AliMpStringObjMap.h

index 077198f..a1ad6b3 100644 (file)
@@ -400,9 +400,10 @@ Bool_t AliMpCDB::WriteMpRunData()
 }
 
 //______________________________________________________________________________
-Bool_t AliMpCDB::WriteMpSegmentation(Bool_t readData)
+Bool_t AliMpCDB::WriteMpSegmentation(Bool_t readData, Bool_t empty)
 {
-/// Write mapping segmentation in OCDB
+/// Write mapping segmentation in OCDB;
+/// if empty is true then a non-valid object of minimum size is written
 
   if ( ! readData && ! AliMpSegmentation::Instance() ) return false;
 
@@ -418,17 +419,18 @@ Bool_t AliMpCDB::WriteMpSegmentation(Bool_t readData)
 
   if ( readData ) {
     AliMpDataStreams dataStreams;
-    AliMpSegmentation::ReadData(dataStreams, false);
-    AliMpDDLStore::ReadData(dataStreams, false);
+    AliMpSegmentation::ReadData(dataStreams, false, empty);
+    AliMpDDLStore::ReadData(dataStreams, false, empty);
   }
   
   return cdbManager->Put(AliMpSegmentation::Instance(), id, cdbData);
 }
 
 //______________________________________________________________________________
-Bool_t AliMpCDB::WriteDDLStore(Bool_t readData)
+Bool_t AliMpCDB::WriteDDLStore(Bool_t readData, Bool_t empty)
 {
 /// Write mapping DDL store in OCDB
+/// if empty is true then a non-valid object of minimum size is written
 
   if ( ! readData && ! AliMpDDLStore::Instance() ) return false;
 
@@ -444,16 +446,17 @@ Bool_t AliMpCDB::WriteDDLStore(Bool_t readData)
 
   if ( readData ) {
     AliMpDataStreams dataStreams;
-    AliMpSegmentation::ReadData(dataStreams, false);
-    AliMpDDLStore::ReadData(dataStreams, false);
+    AliMpSegmentation::ReadData(dataStreams, false, empty);
+    AliMpDDLStore::ReadData(dataStreams, false, empty);
   }
   return cdbManager->Put(AliMpDDLStore::Instance(), id, cdbData);
 }   
 
 //______________________________________________________________________________
-Bool_t AliMpCDB::WriteManuStore(Bool_t readData)
+Bool_t AliMpCDB::WriteManuStore(Bool_t readData, Bool_t empty)
 {
 /// Write mapping Manu store in OCDB
+/// if empty is true then a non-valid object of minimum size is written
 
   if ( ! readData && ! AliMpManuStore::Instance() ) return false;
 
@@ -469,8 +472,8 @@ Bool_t AliMpCDB::WriteManuStore(Bool_t readData)
 
   if ( readData ) {
     AliMpDataStreams dataStreams;
-    AliMpSegmentation::ReadData(dataStreams, false);
-    AliMpManuStore::ReadData(dataStreams, false);
+    AliMpSegmentation::ReadData(dataStreams, false, empty);
+    AliMpManuStore::ReadData(dataStreams, false, empty);
   }
   return cdbManager->Put(AliMpManuStore::Instance(), id, cdbData);
 }   
index 0e6f079..8ab1e84 100644 (file)
@@ -41,7 +41,7 @@ class AliMpCDB : public  TObject {
     static Bool_t LoadMpSegmentation(Bool_t warn = false);
     static Bool_t LoadDDLStore(Bool_t warn = false);
     static Bool_t LoadManuStore(Bool_t warn = false);
-  static Bool_t LoadAll(Bool_t warn = false);
+    static Bool_t LoadAll(Bool_t warn = false);
   
     static Bool_t LoadMpSegmentation2(
                     const char* cdbpath = "local://$ALICE_ROOT/OCDB",
@@ -55,15 +55,15 @@ class AliMpCDB : public  TObject {
                     const char* cdbpath = "local://$ALICE_ROOT/OCDB",
                     Int_t runNumber = 0,
                     Bool_t warn = false);
-  static Bool_t LoadAll2(const char* cdbpath = "local://$ALICE_ROOT/OCDB",
-                         Int_t runNumber = 0,
-                         Bool_t warn = false);
+    static Bool_t LoadAll2(const char* cdbpath = "local://$ALICE_ROOT/OCDB",
+                    Int_t runNumber = 0,
+                    Bool_t warn = false);
   
     static Bool_t WriteMpData();
     static Bool_t WriteMpRunData();
-    static Bool_t WriteMpSegmentation(Bool_t readData = true);
-    static Bool_t WriteDDLStore(Bool_t readData= true);
-    static Bool_t WriteManuStore(Bool_t readData= true);
+    static Bool_t WriteMpSegmentation(Bool_t readData = true, Bool_t empty = true);
+    static Bool_t WriteDDLStore(Bool_t readData= true, Bool_t empty = true);
+    static Bool_t WriteManuStore(Bool_t readData= true, Bool_t empty = true);
     
     static Bool_t GenerateMpData(
                     const char* cdbpath = "local://$ALICE_ROOT/OCDB",
index f92e698..f9f6a48 100644 (file)
@@ -87,7 +87,7 @@ AliMpDDLStore* AliMpDDLStore::Instance(Bool_t warn)
 
 //______________________________________________________________________________
 AliMpDDLStore* AliMpDDLStore::ReadData(const AliMpDataStreams& dataStreams,
-                                       Bool_t warn) 
+                                       Bool_t warn, Bool_t empty
 {
     /// Load the DDL store from ASCII data files
     /// and return its instance
@@ -98,10 +98,17 @@ AliMpDDLStore* AliMpDDLStore::ReadData(const AliMpDataStreams& dataStreams,
         return fgInstance;
     }
 
-    if ( dataStreams.GetReadFromFiles() )
-      AliInfoClass("Reading Manu Store from ASCII files.");
+    if ( ! empty ) {
+      if ( dataStreams.GetReadFromFiles() )
+        AliInfoClass("Reading DDL Store from ASCII files.");
+
+      fgInstance = new AliMpDDLStore(dataStreams);
+    }
+    else {
+      AliInfoClass("Creating invalid DDL Store of minimum size.");
+      fgInstance = new AliMpDDLStore(dataStreams, true);
+    }   
 
-    fgInstance = new AliMpDDLStore(dataStreams);
     return fgInstance;
 }
 
@@ -124,6 +131,7 @@ AliMpDDLStore::AliMpDDLStore(const AliMpDataStreams& dataStreams)
   AliDebug(1,"");
   fDDLs.SetOwner(true);
   fBusPatches.SetOwner(true);
+  
   fBusPatches.SetSize(900);
 
   // Load segmentation & DE store data
@@ -140,6 +148,25 @@ AliMpDDLStore::AliMpDDLStore(const AliMpDataStreams& dataStreams)
   ReadBusPatchInfo();
 }
 
+//______________________________________________________________________________
+AliMpDDLStore::AliMpDDLStore(const AliMpDataStreams& dataStreams, Bool_t /*empty*/)
+        : TObject(),
+        fkDataStreams(dataStreams),
+        fDDLs(fgkNofDDLs+fgkNofTriggerDDLs), // FIXEME
+        fBusPatches(true),
+        fManuList12(),
+        fManuBridge2(),
+        fRegionalTrigger()
+{
+  /// The special constructor for creating a minimum size object
+  /// The argument minSize is used only to distinguish this ctor
+  /// from the standard one, its value is not used.
+  
+  AliDebug(1,"");
+  fDDLs.SetOwner(true);
+  fBusPatches.SetOwner(true);
+}
+
 //______________________________________________________________________________
 AliMpDDLStore::AliMpDDLStore(TRootIOCtor* ioCtor)
         : TObject(),
index d9645c2..7ad2a45 100644 (file)
@@ -41,7 +41,8 @@ class AliMpDDLStore : public  TObject {
     // static access method
     static AliMpDDLStore* Instance(Bool_t warn = true); 
     static AliMpDDLStore* ReadData(const AliMpDataStreams& dataStreams,
-                                   Bool_t warn = true);
+                                   Bool_t warn = true,
+                                   Bool_t empty = false);
     
     // methods
     AliMpDDL*          GetDDL(Int_t ddlId, Bool_t warn = true) const;
@@ -74,6 +75,7 @@ class AliMpDDLStore : public  TObject {
     
   private:
     AliMpDDLStore(const AliMpDataStreams& dataStreams);
+    AliMpDDLStore(const AliMpDataStreams& dataStreams, Bool_t empty);
     /// Not implemented
     AliMpDDLStore();
     /// Not implemented
index 08b2955..9f14af0 100644 (file)
@@ -103,6 +103,25 @@ AliMpExMap::AliMpExMap()
   fObjects.SetOwner(fgkDefaultOwnership);
 }
 
+//_____________________________________________________________________________
+AliMpExMap::AliMpExMap(Bool_t /*minSize*/) 
+  : TObject(),
+    fMap(0),
+    fObjects(0),
+    fKeys(0)
+{
+      /// Special constructor for creating an object with minimum size.
+      /// The argument minSize is used only to distinguish this ctor
+      /// from the standard one, its value is not used.
+      /// When setting the initial size to 0, Root will adapt it to a minimal
+      /// allowed size: 
+      /// - 5 for TExMap (fMap)
+      /// - TCollection::kInitCapacity for TObjArray (fObjects)
+      /// - 0 for TArrayL (fKeys)
+
+  fObjects.SetOwner(fgkDefaultOwnership);
+}
+
 //_____________________________________________________________________________
 AliMpExMap::AliMpExMap(TRootIOCtor*) 
   : TObject(),
index b965e05..963e836 100644 (file)
@@ -31,6 +31,7 @@ class AliMpExMap : public TObject
   
   public:
     AliMpExMap();
+    AliMpExMap(Bool_t minSize);
     AliMpExMap(TRootIOCtor* /*ioCtor*/);
     AliMpExMap(const AliMpExMap& rhs);
     AliMpExMap& operator=(const AliMpExMap& rhs);
index afbcc0f..3a71ed8 100644 (file)
@@ -74,21 +74,28 @@ AliMpManuStore* AliMpManuStore::Instance(Bool_t warn)
 
 //______________________________________________________________________________
 AliMpManuStore* AliMpManuStore::ReadData(const AliMpDataStreams& dataStreams, 
-                                         Bool_t warn) 
+                                         Bool_t warn, Bool_t empty
 {
     /// Load the DDL store from ASCII data files
     /// and return its instance
 
     if ( fgInstance ) {
         if ( warn )
-            AliWarningClass("DDL Store has been already loaded");
+            AliWarningClass("Manu Store has been already loaded");
         return fgInstance;
     }
 
-    if ( dataStreams.GetReadFromFiles() )
-      AliInfoClass("Reading Manu Store from ASCII files.");
+    if ( ! empty ) {
+      if ( dataStreams.GetReadFromFiles() )
+        AliInfoClass("Reading Manu Store from ASCII files.");
 
-    fgInstance = new AliMpManuStore(dataStreams);
+      fgInstance = new AliMpManuStore(dataStreams);
+    }
+    else {
+      AliInfoClass("Creating invalid Manu Store of minimum size.");
+      fgInstance = new AliMpManuStore(dataStreams, true);
+    }   
+        
     return fgInstance;
 }
 
@@ -117,10 +124,26 @@ AliMpManuStore::AliMpManuStore(const AliMpDataStreams& dataStreams)
        << endl;
      return;
   }      
-
+  
   ReadManuSerial();
 }
 
+//______________________________________________________________________________
+AliMpManuStore::AliMpManuStore(const AliMpDataStreams& dataStreams, Bool_t empty)
+: TObject(),
+  fkDataStreams(dataStreams),
+  fManuToSerialNbs(0),
+  fSerialNbToManus(0),
+  fNofManusInDE(0),
+  fNofManus(0)
+{  
+/// The special constructor for creating a minimum size object
+/// The argument minSize is used only to distinguish this ctor
+/// from the standard one, its value is not used.
+
+  AliDebug(1,"");
+}
+
 //______________________________________________________________________________
 AliMpManuStore::AliMpManuStore(TRootIOCtor* ioCtor)
 : TObject(),
index 30cf5ad..1eb2a14 100644 (file)
@@ -35,7 +35,8 @@ class AliMpManuStore : public  TObject {
     // static access method
     static AliMpManuStore* Instance(Bool_t warn = true); 
     static AliMpManuStore* ReadData(const AliMpDataStreams& dataStreams,
-                                    Bool_t warn = true);
+                                    Bool_t warn = true,
+                                    Bool_t empty = false);
                                     
     static void SetWarnIfDoublon(Bool_t warn);                             
     
@@ -51,6 +52,7 @@ class AliMpManuStore : public  TObject {
 
   private:
     AliMpManuStore(const AliMpDataStreams& dataStreams);
+    AliMpManuStore(const AliMpDataStreams& dataStreams, Bool_t empty);
      /// Not implemented
     AliMpManuStore();
      /// Not implemented
index ce9b566..bfeac34 100644 (file)
@@ -82,10 +82,12 @@ AliMpSegmentation* AliMpSegmentation::Instance(Bool_t warn)
 
 //______________________________________________________________________________
 AliMpSegmentation* AliMpSegmentation::ReadData(const AliMpDataStreams& dataStreams,
-                                               Bool_t warn)
+                                               Bool_t warn, Bool_t empty)
 {
 /// Load the sementation from ASCII data files
-/// and return its instance
+/// and return its instance. \n
+/// If empty parameter is true, then no data is loaded and 
+/// an empty object is created.
 
   if ( fgInstance ) {
     if ( warn )
@@ -93,10 +95,17 @@ AliMpSegmentation* AliMpSegmentation::ReadData(const AliMpDataStreams& dataStrea
     return fgInstance;
   }  
   
-  if ( dataStreams.GetReadFromFiles() )
-    AliInfoClass("Reading segmentation from ASCII files.");
+  if ( ! empty ) {
+    if ( dataStreams.GetReadFromFiles() )
+      AliInfoClass("Reading segmentation from ASCII files.");
 
-  fgInstance = new AliMpSegmentation(dataStreams);
+    fgInstance = new AliMpSegmentation(dataStreams);
+  }  
+  else {
+    AliInfoClass("Creating invalid segmentation of minimum size.");
+    fgInstance = new AliMpSegmentation(dataStreams, empty);
+  }   
+    
   return fgInstance;
 }    
 
@@ -123,7 +132,7 @@ AliMpSegmentation::AliMpSegmentation(const AliMpDataStreams& dataStreams)
   if ( ! AliMpDEStore::Instance(false) )  
     AliMpDEStore::ReadData(dataStreams);
   fDetElements = AliMpDEStore::Instance();  
-
+  
   // Create mapping segmentations for all detection elements
   AliMpDEIterator it;
   for ( it.First(); ! it.IsDone(); it.Next() ) 
@@ -145,6 +154,25 @@ AliMpSegmentation::AliMpSegmentation(const AliMpDataStreams& dataStreams)
   } 
 }
 
+//______________________________________________________________________________
+AliMpSegmentation::AliMpSegmentation(const AliMpDataStreams& dataStreams, 
+                                     Bool_t /*empty*/)
+: TObject(),
+  fkDataStreams(dataStreams),
+  fDetElements(0x0),
+  fMpSegmentations(true, true),
+  fElCardsMap(true),
+  fSlatMotifMap(0x0)
+{  
+/// The special constructor for creating a minimum size object
+/// The argument minSize is used only to distinguish this ctor
+/// from the standard one, its value is not used.
+
+  AliDebug(1,"");
+  
+  fElCardsMap.SetOwner(kTRUE);
+}
+
 //______________________________________________________________________________
 AliMpSegmentation::AliMpSegmentation(TRootIOCtor* ioCtor)
 : TObject(),
index 914765f..6b21e01 100644 (file)
@@ -56,7 +56,8 @@ class AliMpSegmentation : public  TObject {
     // static methods
     static AliMpSegmentation* Instance(Bool_t warn = true);
     static AliMpSegmentation* ReadData(const AliMpDataStreams& dataStreams, 
-                                       Bool_t warn = true);
+                                       Bool_t warn = true,
+                                       Bool_t empty = false);
 
     // methods
     
@@ -98,6 +99,7 @@ class AliMpSegmentation : public  TObject {
   
   private:
     AliMpSegmentation(const AliMpDataStreams& dataStreams);
+    AliMpSegmentation(const AliMpDataStreams& dataStreams, Bool_t empty);
     /// Not implemented
     AliMpSegmentation(const AliMpSegmentation& rhs);
     /// Not implemented
index fdd6eef..334fcc0 100644 (file)
@@ -51,6 +51,25 @@ AliMpStringObjMap::AliMpStringObjMap(Bool_t isOwner)
   fSecondArray.SetOwner(isOwner);
 }
 
+//______________________________________________________________________________
+AliMpStringObjMap::AliMpStringObjMap(Bool_t /*minSize*/, Bool_t isOwner)
+ : TObject(),
+   fNofItems(0),
+   fFirstArray(0),
+   fSecondArray(0),
+   fCurrentIndex(0)
+{
+/// Special constructor to create an object of minimum size.
+/// The argument minSize is used only to distinguish this ctor
+/// from the standard one, its value is not used.
+/// When setting the initial size to 0, Root will adapt it to a minimal
+/// allowed size: 
+/// - TCollection::kInitCapacity for TObjArray (fObjects)
+
+  fFirstArray.SetOwner(true);
+  fSecondArray.SetOwner(isOwner);
+}
+
 //______________________________________________________________________________
 AliMpStringObjMap::~AliMpStringObjMap()
 {
index 6639153..d796906 100644 (file)
@@ -22,6 +22,7 @@ class AliMpStringObjMap : public TObject
 {
   public:
     AliMpStringObjMap(Bool_t isOwner = false);
+    AliMpStringObjMap(Bool_t minSize, Bool_t isOwner);
     virtual ~AliMpStringObjMap();
     
     // methods