]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MFT/AliMFTReconstructor.cxx
end-of-line normalization
[u/mrichter/AliRoot.git] / MFT / AliMFTReconstructor.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 //
18 //      Event reconstruction class for the ALICE Muon Forward Tracker
19 //
20 //      Contact author: antonio.uras@cern.ch
21 //
22 //====================================================================================================================================================
23
24 #include "TObjArray.h"
25 #include "TTree.h"
26 #include "AliMFTSegmentation.h"
27 #include "AliMFTClusterFinder.h"
28 #include "AliReconstructor.h"
29 #include "AliMFTReconstructor.h"
30
31 ClassImp(AliMFTReconstructor)
32
33 //====================================================================================================================================================
34
35 AliMFTReconstructor::AliMFTReconstructor():
36   AliReconstructor(), 
37   fDigits(0x0),
38   fNPlanes(0)
39 {
40
41   // default constructor 
42
43 }
44
45 //====================================================================================================================================================
46
47 AliMFTReconstructor::~AliMFTReconstructor() {
48   
49   // destructor
50   
51   if (fDigits) {
52     for (Int_t iPlane=0; iPlane<fNPlanes; iPlane++) {
53       if (fDigits->At(iPlane)) fDigits->At(iPlane)->Delete();
54     }
55     fDigits->Delete();
56     delete fDigits;
57     fDigits=0;
58   }
59   
60 }
61
62 //====================================================================================================================================================
63
64 void AliMFTReconstructor::Clear(const Option_t* /*opt*/) {
65         
66   // Clear arrays
67   
68   if (fDigits) {
69     for (Int_t iPlane=0; iPlane<fNPlanes; iPlane++) {
70       if (fDigits->At(iPlane)) ((TClonesArray*)fDigits->At(iPlane))->Delete();
71     }
72     fDigits->Delete();
73     delete fDigits;
74     fDigits = NULL;
75   }
76   
77 }
78
79 //====================================================================================================================================================
80
81 void AliMFTReconstructor::Init() {
82
83   AliMFTSegmentation *segmentation = new AliMFTSegmentation("AliMFTGeometry.root");
84   fNPlanes = segmentation->GetNPlanes();
85   delete segmentation;
86
87   fDigits = new TObjArray(fNPlanes);
88   fDigits->SetOwner(kTRUE);
89   for (Int_t iPlane=0; iPlane<fNPlanes; iPlane++) {
90     fDigits->AddAt(new TClonesArray("AliMFTDigit"),iPlane);
91     ((TClonesArray*)fDigits->At(iPlane))->SetOwner(kTRUE);
92   }
93   
94   AliInfo("    ************* Using the MFT reconstructor! ****** ");
95   
96   return;
97
98 }
99
100 //====================================================================================================================================================
101
102 void AliMFTReconstructor::ResetDigits() {
103
104   // Reset number of digits and the digits array for the MFT detector.
105
106   if (!fDigits) return;
107   for (Int_t iPlane=0; iPlane<fNPlanes; iPlane++) {
108     ResetDigits(iPlane);
109   }
110
111 }
112
113 //====================================================================================================================================================
114
115 void AliMFTReconstructor::ResetDigits(Int_t plane) {
116
117   // Reset number of digits and the digits array for this branch.
118
119   if (fDigits->At(plane)) ((TClonesArray*)fDigits->At(plane))->Clear();
120
121 }
122
123 //====================================================================================================================================================
124
125 void AliMFTReconstructor::Reconstruct(TTree *digitsTree, TTree *clustersTree) const {
126
127   AliInfo("Starting Reconstruction for MFT");
128
129   // Clusterization
130
131   AliDebug(1, Form("nPlanes = %d",fNPlanes));
132
133   for (Int_t iPlane=0; iPlane<fNPlanes; iPlane++) {
134     AliDebug(1, Form("Setting Address for Branch Plane_%02d", iPlane)); 
135     digitsTree->SetBranchAddress(Form("Plane_%02d",iPlane), &(*fDigits)[iPlane]);
136   }
137  
138   digitsTree->GetEntry(0);
139
140   AliDebug(1, "Creating clusterFinder");
141   AliMFTClusterFinder *clusterFinder = new AliMFTClusterFinder();
142   clusterFinder->Init("AliMFTGeometry.root");
143   AliDebug(1, "clusterFinder->MakeClusterBranch(clustersTree)");
144   clusterFinder->MakeClusterBranch(clustersTree);
145   AliDebug(1, "clusterFinder->SetClusterTreeAddress(clustersTree)");
146   clusterFinder->SetClusterTreeAddress(clustersTree);
147   AliDebug(1, "clusterFinder->DigitsToClusters(fDigits)");
148   clusterFinder->DigitsToClusters(fDigits);
149   AliDebug(1, "clustersTree->Fill()");
150   clustersTree->Fill();                         // fill tree for current event
151   AliDebug(1, "delete clusterFinder");
152   delete clusterFinder;
153
154   for (Int_t iPlane=0; iPlane<fNPlanes; iPlane++) {
155     AliDebug(1, Form("fDigits->At(%d)->Clear()",iPlane));
156     ((TClonesArray*)fDigits->At(iPlane))->Delete();
157   }
158
159 }
160
161 //====================================================================================================================================================