1) Moved LoadClusters to AliITSURecoDet, AliITSUReconstructor::LoadClusters
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 11 Mar 2013 09:44:29 +0000 (09:44 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 11 Mar 2013 09:44:29 +0000 (09:44 +0000)
is just an alias to it.
2) Added possibility AliITSURecoDet initialize cluster arrays owned by
   active AliITSURecoLayer's. To be used only in case when clusters are needed
   w/o AliITSUReconstructor initialization

ITS/UPGRADE/AliITSURecoDet.cxx
ITS/UPGRADE/AliITSURecoDet.h
ITS/UPGRADE/AliITSURecoLayer.cxx
ITS/UPGRADE/AliITSURecoLayer.h
ITS/UPGRADE/AliITSUReconstructor.cxx
ITS/UPGRADE/AliITSUReconstructor.h

index 4be281a..2b995ee 100644 (file)
@@ -1,13 +1,16 @@
 #include <TGeoVolume.h>
 #include <TGeoTube.h>
 #include <TGeoManager.h>
+#include <TTree.h>
 #include "AliITSURecoDet.h"
 #include "AliITSUGeomTGeo.h"
 #include "AliITSsegmentation.h"
 #include "AliITSUSegmentationPix.h"
+#include "AliITSUClusterPix.h"
 #include "AliITSUReconstructor.h"
 
 
+
 ClassImp(AliITSURecoDet)
 
 
@@ -189,3 +192,36 @@ Int_t AliITSURecoDet::FindFirstLayerID(Double_t r, int dir) const
   }
   //
 }
+
+//______________________________________________________
+void AliITSURecoDet::CreateClusterArrays()
+{
+  // create cluster arrays for active layers
+  for (int ilr=0;ilr<fNLayersActive;ilr++) {
+    AliITSURecoLayer*  lr = GetLayerActive(ilr);
+    lr->SetOwnsClusterArray(kTRUE);
+    int tpDet = fGeom->GetLayerDetTypeID(ilr)/AliITSUGeomTGeo::kMaxSegmPerDetType;
+    //
+    if (tpDet == AliITSUGeomTGeo::kDetTypePix) {
+      lr->SetClusters(new TClonesArray(AliITSUClusterPix::Class()));
+    }
+    else {
+      AliFatal(Form("Unknown detector type %d",tpDet));
+    }
+    //
+  }
+  //
+}
+
+//_____________________________________________________________________________
+Int_t AliITSURecoDet::LoadClusters(TTree* treeRP) 
+{
+  // read clusters from the tree, if it is provided
+  if (!treeRP) return 0;
+  for (int ilr=fNLayersActive;ilr--;) {
+    TBranch* br = treeRP->GetBranch(Form("ITSRecPoints%d",ilr));
+    if (!br) AliFatal(Form("Provided cluster tree does not contain branch for layer %d",ilr));
+    br->SetAddress( GetLayerActive(ilr)->GetClustersAddress() );
+  }
+  return treeRP->GetEntry(0); // we are still in 1 ev/tree mode...
+}
index 85cb552..618713c 100644 (file)
@@ -5,6 +5,7 @@
 #include <TObjArray.h>
 #include "AliITSURecoLayer.h"
 class AliITSUGeomTGeo;
+class TTree;
 
 ///////////////////////////////////////////////////////////////////////
 //                                                                   //
@@ -38,6 +39,8 @@ class AliITSURecoDet : public TNamed
   void               AddLayer(const AliITSURecoLayer* lr);
   //
   void               ProcessClusters(Int_t mode=0);
+  void               CreateClusterArrays();
+  Int_t              LoadClusters(TTree* treeRP);
   //
   virtual void       Print(Option_t* option = "")  const;
   //
index 17cc909..f6edd8e 100644 (file)
@@ -70,6 +70,7 @@ AliITSURecoLayer::~AliITSURecoLayer()
   delete[] fSensors;
   delete[] fPhiLadMax;
   delete[] fPhiLadMin;
+  if (GetOwnsClusterArray()) delete fClusters;
 }
 
 //______________________________________________________
index 677ea6f..5f03edb 100644 (file)
@@ -23,7 +23,9 @@ class AliITSURecoLayer : public TNamed
 {
  public:
   //
-  enum {kPassive=BIT(14)};
+  enum {kPassive=BIT(14)                 // layer is passive
+       ,kOwnsClusterArray=BIT(15)       // owner of cluster array, delete in destructor
+  };
   AliITSURecoLayer(const char* name);
   AliITSURecoLayer(const char* name, Int_t activeID,AliITSUGeomTGeo* gm);
   virtual ~AliITSURecoLayer();
@@ -45,6 +47,7 @@ class AliITSURecoLayer : public TNamed
   Double_t           GetMaxStep()                  const {return fMaxStep;}
   Bool_t             IsActive()                    const {return !TestBit(kPassive);}
   Bool_t             IsPassive()                   const {return TestBit(kPassive);}
+  Bool_t             GetOwnsClusterArray()         const {return TestBit(kOwnsClusterArray);}
   //
   void               SetID(Int_t i)                      {SetUniqueID(i);} 
   void               SetActiveID(Int_t i)                {fActiveID = i;} 
@@ -54,12 +57,14 @@ class AliITSURecoLayer : public TNamed
   void               SetZMin(Double_t z)                 {fZMin = z;}
   void               SetZMax(Double_t z)                 {fZMax = z;}
   void               SetPassive(Bool_t v=kTRUE)          {SetBit(kPassive,v);}
+  void               SetOwnsClusterArray(Bool_t v=kTRUE) {SetBit(kOwnsClusterArray,v);}
   void               SetMaxStep(Double_t st)             {fMaxStep = st>0 ? st : 0.1;}
   //
   AliITSURecoSens*   GetSensor(Int_t i)            const {return i<0 ? 0:(AliITSURecoSens*)fSensors[i];}
   AliITSURecoSens*   GetSensor(Int_t ld,Int_t is)  const {return GetSensor(ld*fNSensInLadder+is);}
   AliITSURecoSens*   GetSensorFromID(Int_t i)      const;
   TClonesArray*      GetClusters()                 const {return (TClonesArray*)fClusters;}
+  TClonesArray**     GetClustersAddress()                {return (TClonesArray**)&fClusters;}  
   Int_t              GetNClusters()                const {return fClusters ? fClusters->GetEntriesFast() : 0;}
   AliCluster*        GetCluster(Int_t icl)         const {return (AliCluster*)fClusters->UncheckedAt(icl);}
   void               SetClusters(TClonesArray* cl)       {fClusters = cl;}
index a673449..36a6af5 100644 (file)
@@ -217,11 +217,11 @@ AliTracker* AliITSUReconstructor::CreateTrackleter() const
 
 }
 
+/*
 //_____________________________________________________________________________
 Int_t AliITSUReconstructor::LoadClusters(TTree* treeRP) 
 {
   // read clusters from the tree, if it is provided
-  if (!treeRP) return 0;
   for (int ilr=fGeom->GetNLayers();ilr--;) {
     if (!fClusters[ilr]) AliFatal(Form("Clusters array for layer %d is not defined",ilr)); 
     TBranch* br = treeRP->GetBranch(Form("ITSRecPoints%d",ilr));
@@ -231,6 +231,8 @@ Int_t AliITSUReconstructor::LoadClusters(TTree* treeRP)
   treeRP->GetEntry(0); // we are still in 1 ev/tree mode...
   return 1;
 }
+*/
+
 
 //_____________________________________________________________________________
 AliITSURecoDet* AliITSUReconstructor::GetITSInterface()
index d03b97e..9aa021a 100644 (file)
 
 #include "AliReconstructor.h"
 #include "AliITSURecoParam.h"
+#include "AliITSURecoDet.h"
 
 class AliTracker;
 class AliTrackleter;
 class AliITSUGeomTGeo;
-class AliITSURecoDet;
 
 class AliITSUReconstructor: public AliReconstructor {
 public:
@@ -37,9 +37,8 @@ public:
   AliITSUGeomTGeo*       GetGeom()                          const {return (AliITSUGeomTGeo*)fGeom;}
   AliITSURecoDet*        GetITSInterface();
   //
-  Int_t                  LoadClusters(TTree* treeRP);
+  Int_t                  LoadClusters(TTree* treeRP)        {return GetITSInterface()->LoadClusters(treeRP);}
   //
-
   static const AliITSURecoParam* GetRecoParam() { 
     return dynamic_cast<const AliITSURecoParam*>(AliReconstructor::GetRecoParam(0)); }