Bug in storage manager making possible to delete permanent event fixed
[u/mrichter/AliRoot.git] / MFT / AliMFT.h
index be506be..60d4654 100644 (file)
@@ -24,7 +24,6 @@
 #include "AliDetector.h"
 #include "AliMC.h"
 #include "AliMagF.h"
-#include "AliMFT.h"
 #include "AliMFTHit.h"
 #include "AliMFTDigit.h"
 #include "AliMFTCluster.h"
@@ -34,6 +33,7 @@
 #include "AliMFTPlane.h"
 #include "TString.h"
 #include "TObjArray.h"
+#include "AliMFTConstants.h"
 
 //====================================================================================================================================================
 
@@ -51,7 +51,8 @@ public:
   
   // ------- framework part -----------------------------------------------------------------------------------
   void CreateMaterials();                       // from AliModule invoked from AliMC
-  void CreateGeometry();                        // from AliModule invoked from AliMC                     
+  void CreateGeometry();                        // from AliModule invoked from AliMC
+  void AddAlignableVolumes();                     
   void StepManager();                           // from AliModule invoked from AliMC::Stepping()
   void Hits2SDigits();
   void Hits2SDigitsLocal(TClonesArray *hits, const TObjArray *pSDig, Int_t track);
@@ -64,24 +65,24 @@ public:
   void CreateDigits();
   void CreateRecPoints();
 
-  TObjArray*    GetSDigitsList()            const { return fSDigitsPerPlane; }                                                  // get sdigits list for all planes
-  TClonesArray* GetSDigitsList(Int_t plane) const { return fSDigitsPerPlane ? (TClonesArray*) fSDigitsPerPlane->At(plane):0; }  // get sdigits list for a plane
+  TObjArray*    GetSDigitsList()            const { return fSDigitsPerPlane; }     // get sdigits list for all planes
+  TClonesArray* GetSDigitsList(Int_t plane) const { return fSDigitsPerPlane ? (TClonesArray*) fSDigitsPerPlane->At(plane):0; } 
 
-  TObjArray*    GetDigitsList()            const{return fDigitsPerPlane;}                                                   // get digits list for all layers
-  TClonesArray* GetDigitsList(Int_t plane) const{return fDigitsPerPlane ? (TClonesArray*) fDigitsPerPlane->At(plane):0; }   // get digits list for a plane
+  TObjArray*    GetDigitsList()            const{return fDigitsPerPlane;}          // get digits list for all layers
+  TClonesArray* GetDigitsList(Int_t plane) const{return fDigitsPerPlane ? (TClonesArray*) fDigitsPerPlane->At(plane):0; }
 
-  TObjArray*    GetRecPointsList()            const{return fRecPointsPerPlane;}                                                      // get digits list for all layers
-  TClonesArray* GetRecPointsList(Int_t plane) const{return fRecPointsPerPlane ? (TClonesArray*) fRecPointsPerPlane->At(plane):0; }   // get digits list for a plane
+  TObjArray*    GetRecPointsList()            const{return fRecPointsPerPlane;}    // get cluster list for all layers
+  TClonesArray* GetRecPointsList(Int_t plane) const{return fRecPointsPerPlane ? (TClonesArray*) fRecPointsPerPlane->At(plane):0; }
 
   void ResetSDigits()   { if(fSDigitsPerPlane)   for(int iPlane=0; iPlane<fNPlanes; iPlane++) ((TClonesArray*) fSDigitsPerPlane  ->At(iPlane))->Clear(); }   // reset sdigits list  
   void ResetDigits()    { if(fDigitsPerPlane)    for(int iPlane=0; iPlane<fNPlanes; iPlane++) ((TClonesArray*) fDigitsPerPlane   ->At(iPlane))->Clear(); }   // reset digits list
   void ResetRecPoints() { if(fRecPointsPerPlane) for(int iPlane=0; iPlane<fNPlanes; iPlane++) ((TClonesArray*) fRecPointsPerPlane->At(iPlane))->Clear(); }   // reset recPoints list
   
-  AliDigitizer* CreateDigitizer(AliRunDigitizer *manager) const { return new AliMFTDigitizer(manager); }   // from AliModule invoked from AliSimulation::RunDigitization()
+  AliDigitizer* CreateDigitizer(AliDigitizationInput *digInp) const { return new AliMFTDigitizer(digInp); }
   
   AliMFTSegmentation* GetSegmentation() const { return fSegmentation; }
 
-  enum EMedia{kAir, kSi, kReadout, kSupport};  // media IDs used in CreateMaterials  
+  enum EMedia{kAir, kSi, kReadout, kSupport, kCarbon, kAlu, kWater, kSiO2, kInox};  // media IDs used in CreateMaterials
     
   // Geometry/segmentation creation part
   TGeoVolumeAssembly* CreateVol();
@@ -99,11 +100,24 @@ public:
   Int_t GetNStepForChargeDispersion() { return fNStepForChargeDispersion; }
   Double_t GetSingleStepForChargeDispersion() { return fSingleStepForChargeDispersion; }
 
-  void SetDensitySiOverSupport(Double_t density) { fDensitySiOverSupport = density; }
+  void SetDensitySupportOverSi(Double_t density) { if (density>1e-6) fDensitySupportOverSi=density; else fDensitySupportOverSi=1e-6; }
 
+  //--------- for underlying and pile-up events --------------------
+
+  void SetFileNameForUnderlyingEvent(TString fileName) { if (fileName.EndsWith("MFT.RecPoints.root")) fFileNameForUnderyingEvent += fileName; }
+  void SetFileNameForPileUpEvents(TString fileName)    { if (fileName.EndsWith("MFT.RecPoints.root")) fFileNameForPileUpEvents   += fileName; }
+
+  void SetUnderlyingEventID(Short_t eventID) { fUnderlyingEventID = eventID; }
+  void SetPileUpEventID(Short_t i, Short_t eventID) { if (i>=0 && i<AliMFTConstants::fNMaxPileUpEvents) fPileUpEventsIDs[i] = eventID; }
+
+  const Char_t* GetFileNameForUnderlyingEvent() { return fFileNameForUnderyingEvent; }
+  const Char_t* GetFileNameForPileUpEvents()    { return fFileNameForPileUpEvents; }
+  Short_t GetUnderlyingEventID() { return fUnderlyingEventID; }
+  Short_t GetPileUpEventID(Short_t i) { if (i>=0 && i<AliMFTConstants::fNMaxPileUpEvents) return fPileUpEventsIDs[i]; else return -1; }
+  
 protected:
 
-  static const Int_t fNMaxPlanes = 20;        // max number of MFT planes
+  static const Int_t fNMaxPlanes = AliMFTConstants::fNMaxPlanes;        // max number of MFT planes
 
   Int_t fVersion;
 
@@ -123,14 +137,17 @@ protected:
   Double_t fSingleStepForChargeDispersion;
   Int_t fNStepForChargeDispersion;
 
-  Double_t fDensitySiOverSupport;
+  Double_t fDensitySupportOverSi;
+
+  TString fFileNameForUnderyingEvent, fFileNameForPileUpEvents;
+  Short_t fNPileUpEvents, fUnderlyingEventID, fPileUpEventsIDs[AliMFTConstants::fNMaxPileUpEvents];
   
 private:
 
   AliMFT (const AliMFT& mft);             // dummy copy constructor
   AliMFT &operator=(const AliMFT& mft);   // dummy assignment operator
   
-  ClassDef(AliMFT,1) 
+  ClassDef(AliMFT,2) 
     
 };