Make separate, specialized geometries for RPhi and RhoZ views.
[u/mrichter/AliRoot.git] / PHOS / AliPHOSPID.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 /* $Id$ */
17
18 //_________________________________________________________________________
19 //  Algorithm class for the identification of particles detected in PHOS        
20 //  base  class  of identified particle  
21 //  Why should I put meaningless comments
22 //  just to satisfy
23 //  the code checker                
24                          
25 //                  
26 //*-- Author: Yves Schutz (SUBATECH) & Dmitri Peressounko
27
28
29 // --- ROOT system ---
30 #include "TBranch.h"
31 #include "TClonesArray.h"
32 #include "TTree.h"
33
34 // --- Standard library ---
35
36 // --- AliRoot header files ---
37 #include "AliConfig.h"
38 #include "AliLog.h"
39 #include "AliPHOSPID.h"
40
41 ClassImp(AliPHOSPID)
42
43 //____________________________________________________________________________
44 AliPHOSPID::AliPHOSPID():
45   TObject(),
46   fGeom(NULL),
47   fESD(0x0),
48   fEMCRecPoints(NULL),
49   fCPVRecPoints(NULL),
50   fTrackSegments(NULL),
51   fRecParticles(NULL)
52 {
53   // ctor
54 }
55
56
57 //____________________________________________________________________________
58 AliPHOSPID::AliPHOSPID(AliPHOSGeometry *geom):
59   TObject(),
60   fGeom(geom),
61   fESD(0x0),
62   fEMCRecPoints(NULL),
63   fCPVRecPoints(NULL),
64   fTrackSegments(NULL),
65   fRecParticles(NULL)
66 {
67   // ctor
68   fEMCRecPoints = new TObjArray(100) ;
69   fCPVRecPoints = new TObjArray(100) ;
70   fRecParticles = new TClonesArray("AliPHOSRecParticle",100) ;
71   fRecParticles->SetName("RECPARTICLES");
72
73 }
74
75 //____________________________________________________________________________
76 AliPHOSPID::AliPHOSPID(const AliPHOSPID & pid) :
77   TObject(pid),
78   fGeom(pid.fGeom),
79   fESD(pid.fESD), 
80   fEMCRecPoints(pid.fEMCRecPoints),
81   fCPVRecPoints(pid.fCPVRecPoints),
82   fTrackSegments(pid.fTrackSegments),
83   fRecParticles(pid.fRecParticles)
84 {
85   // Copy constructor
86 }
87
88 //____________________________________________________________________________
89 AliPHOSPID::~AliPHOSPID()
90 {
91   // dtor
92   if (fEMCRecPoints) {
93     fEMCRecPoints->Delete();
94     delete fEMCRecPoints;
95   }
96   if (fCPVRecPoints) {
97     fCPVRecPoints->Delete();
98     delete fCPVRecPoints;
99   }
100   if (fRecParticles) {
101     fRecParticles->Delete();
102     delete fRecParticles;
103   }
104 }
105
106 //____________________________________________________________________________
107 void AliPHOSPID::SetInput(TTree *clustersTree, TClonesArray *trackSegments)
108 {
109   // Read the clusters tree and creates the
110   // arrays with the EMC and CPV
111   // clusters.
112   // and set the corresponding branch addresses
113
114   fTrackSegments = trackSegments;
115
116   TBranch *emcbranch = clustersTree->GetBranch("PHOSEmcRP");
117   if (!emcbranch) { 
118     AliError("can't get the branch with the PHOS EMC clusters !");
119     return;
120   }
121   emcbranch->SetAddress(&fEMCRecPoints);
122   fEMCRecPoints->Delete();
123   emcbranch->GetEntry(0);
124
125   TBranch *cpvbranch = clustersTree->GetBranch("PHOSCpvRP");
126   if (!cpvbranch) { 
127     AliError("can't get the branch with the PHOS CPV clusters !");
128     return;
129   }
130   cpvbranch->SetAddress(&fCPVRecPoints);
131   fCPVRecPoints->Delete();
132   cpvbranch->GetEntry(0);
133 }