Memory leaks fixed
[u/mrichter/AliRoot.git] / PHOS / AliPHOSClusterizer.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 //_________________________________________________________________________
17 //  Base class for the clusterization algorithm (pure abstract)
18 //*--
19 //*-- Author: Yves Schutz  SUBATECH 
20 //////////////////////////////////////////////////////////////////////////////
21
22 #include <TClonesArray.h>
23 #include <TTree.h>
24
25 #include "AliPHOSClusterizer.h"
26 #include "AliPHOSDigit.h"
27 #include "AliLog.h"
28
29 ClassImp(AliPHOSClusterizer)
30
31 AliPHOSCalibData * AliPHOSClusterizer::fgCalibData  = 0 ; 
32
33 //____________________________________________________________________________
34 AliPHOSClusterizer::AliPHOSClusterizer():
35   fGeom(NULL),
36   fDigitsArr(0),
37   fTreeR(0),
38   fEMCRecPoints(0),
39   fCPVRecPoints(0)
40 {
41   // ctor
42 }
43
44 //____________________________________________________________________________
45 AliPHOSClusterizer::AliPHOSClusterizer(AliPHOSGeometry *geom):
46   fGeom(geom),
47   fDigitsArr(0),
48   fTreeR(0),
49   fEMCRecPoints(0),
50   fCPVRecPoints(0)
51 {
52   // ctor
53  
54 }
55
56 //____________________________________________________________________________
57 AliPHOSClusterizer::~AliPHOSClusterizer()
58 {
59   // dtor
60   if (fDigitsArr) {
61     fDigitsArr->Delete();
62     delete fDigitsArr;
63   }
64   if (fEMCRecPoints) {
65     fEMCRecPoints->Delete();
66     delete fEMCRecPoints;
67   }
68   if (fCPVRecPoints) {
69     fCPVRecPoints->Delete();
70     delete fCPVRecPoints;
71   }
72 }
73
74 //____________________________________________________________________________
75 void AliPHOSClusterizer::SetInput(TTree * digitsTree) 
76 {
77   // Get the tree with digits and sets
78   // the input array with digits for PHOS
79   TBranch *branch = digitsTree->GetBranch("PHOS");
80   if (!branch) { 
81     AliError("can't get the branch with the PHOS digits !");
82     return;
83   }
84   fDigitsArr = new TClonesArray("AliPHOSDigit",100);
85   branch->SetAddress(&fDigitsArr);
86   branch->GetEntry(0);
87 }
88
89 //____________________________________________________________________________
90 void AliPHOSClusterizer::SetOutput(TTree * clustersTree) 
91 {
92   // Set the output clusters tree,
93   // creates the arrays for EMC and CPV,
94   // and set the corresponding branch addresses
95   fTreeR = clustersTree;
96
97   AliDebug(9, "Making array for EMC clusters");
98   fEMCRecPoints = new TObjArray(100) ;
99   fEMCRecPoints->SetName("EMCRECPOINTS") ;
100   Int_t split = 0;
101   Int_t bufsize = 32000;
102   fTreeR->Branch("PHOSEmcRP", "TObjArray", &fEMCRecPoints, bufsize, split);
103
104   AliDebug(9, "Making array for CPV clusters");
105   fCPVRecPoints = new TObjArray(100) ;
106   fCPVRecPoints->SetName("CPVRECPOINTS") ;
107   fTreeR->Branch("PHOSCpvRP", "TObjArray", &fCPVRecPoints, bufsize, split);
108 }