]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PHOS/AliPHOSClusterizer.cxx
Handle missing rec-point tree in a uniform way: return null pointer to TEvePointSet.
[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   fDigitsArr    = new TClonesArray("AliPHOSDigit",100);
43   fEMCRecPoints = new TObjArray(100) ;
44   fEMCRecPoints ->SetName("EMCRECPOINTS") ;
45   fCPVRecPoints = new TObjArray(100) ;
46   fCPVRecPoints ->SetName("CPVRECPOINTS") ;
47 }
48
49 //____________________________________________________________________________
50 AliPHOSClusterizer::AliPHOSClusterizer(AliPHOSGeometry *geom):
51   fGeom(geom),
52   fDigitsArr(0),
53   fTreeR(0),
54   fEMCRecPoints(0),
55   fCPVRecPoints(0)
56 {
57   // ctor
58   fDigitsArr    = new TClonesArray("AliPHOSDigit",100);
59   fEMCRecPoints = new TObjArray(100) ;
60   fEMCRecPoints ->SetName("EMCRECPOINTS") ;
61   fCPVRecPoints = new TObjArray(100) ;
62   fCPVRecPoints ->SetName("CPVRECPOINTS") ;
63 }
64
65 //____________________________________________________________________________
66 AliPHOSClusterizer::~AliPHOSClusterizer()
67 {
68   // dtor
69   if (fDigitsArr) {
70     fDigitsArr->Delete();
71     delete fDigitsArr;
72   }
73   if (fEMCRecPoints) {
74     fEMCRecPoints->Delete();
75     delete fEMCRecPoints;
76   }
77   if (fCPVRecPoints) {
78     fCPVRecPoints->Delete();
79     delete fCPVRecPoints;
80   }
81 }
82
83 //____________________________________________________________________________
84 void AliPHOSClusterizer::SetInput(TTree * digitsTree) 
85 {
86   // Get the tree with digits and sets
87   // the input array with digits for PHOS
88   TBranch *branch = digitsTree->GetBranch("PHOS");
89   if (!branch) { 
90     AliError("can't get the branch with the PHOS digits !");
91     return;
92   }
93   fDigitsArr->Clear();
94   branch->SetAddress(&fDigitsArr);
95   branch->GetEntry(0);
96 }
97
98 //____________________________________________________________________________
99 void AliPHOSClusterizer::SetOutput(TTree * clustersTree) 
100 {
101   // Set the output clusters tree,
102   // creates the arrays for EMC and CPV,
103   // and set the corresponding branch addresses
104   fTreeR = clustersTree;
105
106 //   fEMCRecPoints->Clear();
107 //   fCPVRecPoints->Clear();
108   fEMCRecPoints->Delete();
109   fCPVRecPoints->Delete();
110
111   AliDebug(9, "Making array for EMC clusters");
112   Int_t split = 0;
113   Int_t bufsize = 32000;
114   fTreeR->Branch("PHOSEmcRP", "TObjArray", &fEMCRecPoints, bufsize, split);
115
116   AliDebug(9, "Making array for CPV clusters");
117   fTreeR->Branch("PHOSCpvRP", "TObjArray", &fCPVRecPoints, bufsize, split);
118 }