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 077198f2f38e901027f5266f08e5bae40622f04c..a1ad6b353ae6c2911d6880b3a73eb697ed1aa40e 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 0e6f079d79bae8e0ecffb9e0243283dd3c6fcda2..8ab1e8426d3adc775f3c4a2c365def165c132a52 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 f92e69829645dacba661018051e5db68f288c266..f9f6a48f3a9b7a6adbea99a15b5ae68a995dcd25 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 d9645c23bde7d0327e03f718e2fced745a67071c..7ad2a455229bd4762bbb164a510dc1f80df27d83 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 08b29558aab5b9e8811b476670a10f59eb72a4e7..9f14af0c670023d50cf7b4dc0648ce0593c718c3 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 b965e058884159114359cdfa10f64dc0b920d123..963e836934852910134014ef9ff8439cad5821f2 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 afbcc0fcd1727355a4bd5ede82e69a3e6166a389..3a71ed860e935d8539149e44ae835acb3a0d41f5 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 30cf5ad1504bff632f0522059c4508c5cccbe757..1eb2a140c2d7a79ad160a0f972927f02818072a2 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 ce9b56674ac876b415d19f51b7e1465e2366bff3..bfeac3478cf0022d78c615c7642aeab17926d51e 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 914765f528bbe545f926049ff23d7a42423d27f3..6b21e01385dc6b0e8d97041dfbdfe30dffbb3a3d 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 fdd6eef84a0357f4df05f4d4ba32ec17fec13c43..334fcc08ba16e1def683225e149056d3187e2b8a 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 6639153196c792a2270845db0099e2ed4f8ef498..d79690633c5b38b60e914d4a46b0081e84ade210 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