fixing small memory leak
[u/mrichter/AliRoot.git] / PHOS / AliPHOSTrackSegmentMaker.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 /* $Id$ */
16
17 /* History of cvs commits:
18  *
19  * $Log$
20  * Revision 1.29  2007/08/28 12:55:08  policheh
21  * Loaders removed from the reconstruction code (C.Cheshkov)
22  *
23  * Revision 1.28  2007/08/07 14:12:03  kharlov
24  * Quality assurance added (Yves Schutz)
25  *
26  * Revision 1.27  2006/08/25 16:56:30  kharlov
27  * Compliance with Effective C++
28  *
29  * Revision 1.26  2006/08/25 16:00:53  kharlov
30  * Compliance with Effective C++AliPHOSHit.cxx
31  *
32  * Revision 1.25  2005/05/28 14:19:05  schutz
33  * Compilation warnings fixed by T.P.
34  *
35  */
36
37 //_________________________________________________________________________
38 // Algorithm Base class to construct PHOS track segments
39 // Associates EMC and PPSD clusters
40 // Unfolds the EMC cluster   
41 //*-- 
42 //*-- Author: Dmitri Peressounko (RRC Ki & SUBATECH)
43
44
45 // --- ROOT system ---
46 #include "TTree.h"
47
48 // --- Standard library ---
49
50 // --- AliRoot header files ---
51 #include "AliPHOSTrackSegmentMaker.h"
52 #include "AliLog.h"
53
54 ClassImp( AliPHOSTrackSegmentMaker) 
55
56
57 //____________________________________________________________________________
58 AliPHOSTrackSegmentMaker:: AliPHOSTrackSegmentMaker() : 
59   TObject(),
60   fESD(0), 
61   fGeom(0),
62   fEMCRecPoints(0),
63   fCPVRecPoints(0)
64 {
65  // ctor
66   fEMCRecPoints = new TObjArray(100) ;
67   fCPVRecPoints = new TObjArray(100) ;
68 }
69
70 //____________________________________________________________________________
71 AliPHOSTrackSegmentMaker::AliPHOSTrackSegmentMaker(AliPHOSGeometry *geom):
72   TObject(),
73   fESD(0), 
74   fGeom(geom),
75   fEMCRecPoints(0),
76   fCPVRecPoints(0)
77 {
78   // ctor
79   fEMCRecPoints = new TObjArray(100) ;
80   fCPVRecPoints = new TObjArray(100) ;
81 }
82
83 //____________________________________________________________________________
84 AliPHOSTrackSegmentMaker::AliPHOSTrackSegmentMaker(const AliPHOSTrackSegmentMaker & tsmaker) :
85   TObject(tsmaker),
86   fESD(tsmaker.GetESD()), 
87   fGeom(tsmaker.fGeom),
88   fEMCRecPoints(tsmaker.fEMCRecPoints),
89   fCPVRecPoints(tsmaker.fCPVRecPoints)
90 {
91   //Copy constructor
92
93
94 //____________________________________________________________________________
95 AliPHOSTrackSegmentMaker::~AliPHOSTrackSegmentMaker()
96 {
97   //Remove this from the parental task before destroying
98   if (fEMCRecPoints) {
99     fEMCRecPoints->Delete();
100     delete fEMCRecPoints;
101   }
102   if (fCPVRecPoints) {
103     fCPVRecPoints->Delete();
104     delete fCPVRecPoints;
105   }
106 }
107
108 //____________________________________________________________________________
109 void AliPHOSTrackSegmentMaker::SetInput(TTree *clustersTree)
110 {
111   // Read the clusters tree and set addresses to the
112   // arrays with the EMC and CPV clusters
113
114   TBranch *emcbranch = clustersTree->GetBranch("PHOSEmcRP");
115   if (!emcbranch) { 
116     AliError("can't get the branch with the PHOS EMC clusters !");
117     return;
118   }
119   emcbranch->SetAddress(&fEMCRecPoints);
120   fEMCRecPoints->Delete();
121   emcbranch->GetEntry(0);
122
123   TBranch *cpvbranch = clustersTree->GetBranch("PHOSCpvRP");
124   if (!cpvbranch) { 
125     AliError("can't get the branch with the PHOS CPV clusters !");
126     return;
127   }
128   cpvbranch->SetAddress(&fCPVRecPoints);
129   fCPVRecPoints->Delete();
130   cpvbranch->GetEntry(0);
131 }