AliRoot Core  edcc906 (edcc906)
AliMFTReconstructor.cxx
Go to the documentation of this file.
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 "AliMFTGeometry.h"
30 #include "AliMFTReconstructor.h"
31 
32 ClassImp(AliMFTReconstructor)
33 
34 //====================================================================================================================================================
35 
38  fDigits(0x0){
39 
40  // default constructor
41 
42 }
43 
44 //====================================================================================================================================================
45 
47 
48  // destructor
49 
50  if (fDigits) {
51  for (Int_t iPlane=0; iPlane<AliMFTConstants::kNDisks; iPlane++) {
52  if (fDigits->At(iPlane)) fDigits->At(iPlane)->Delete();
53  }
54  fDigits->Delete();
55  delete fDigits;
56  fDigits=0;
57  }
58 
59 }
60 
61 //====================================================================================================================================================
62 
63 void AliMFTReconstructor::Clear(const Option_t* /*opt*/) {
64 
65  // Clear arrays
66 
67  if (fDigits) {
68  for (Int_t iPlane=0; iPlane<AliMFTConstants::kNDisks; iPlane++) {
69  if (fDigits->At(iPlane)) ((TClonesArray*)fDigits->At(iPlane))->Delete();
70  }
71  fDigits->Delete();
72  delete fDigits;
73  fDigits = NULL;
74  }
75 
76 }
77 
78 //====================================================================================================================================================
79 
81 
83  mftGeom->LoadSegmentation();
84 
85 
87  fDigits->SetOwner(kTRUE);
88  for (Int_t iPlane=0; iPlane<AliMFTConstants::kNDisks; iPlane++) {
89  fDigits->AddAt(new TClonesArray("AliMFTDigit"),iPlane);
90  ((TClonesArray*)fDigits->At(iPlane))->SetOwner(kTRUE);
91  }
92 
93  AliInfo(" ************* Using the MFT reconstructor! ************ ");
94 
95  return;
96 
97 }
98 
99 //====================================================================================================================================================
100 
102 
103  // Reset number of digits and the digits array for the MFT detector.
104 
105  if (!fDigits) return;
106  for (Int_t iPlane=0; iPlane<AliMFTConstants::kNDisks; iPlane++) {
107  ResetDigits(iPlane);
108  }
109 
110 }
111 
112 //====================================================================================================================================================
113 
115 
116  // Reset number of digits and the digits array for this branch.
117 
118  if (fDigits->At(plane)) ((TClonesArray*)fDigits->At(plane))->Clear();
119 
120 }
121 
122 //====================================================================================================================================================
123 
124 void AliMFTReconstructor::Reconstruct(TTree *digitsTree, TTree *clustersTree) const {
125 
126  AliInfo("Starting Reconstruction for MFT");
127 
128  // Clusterization
129 
130  for (Int_t iPlane=0; iPlane<AliMFTConstants::kNDisks; iPlane++) {
131  AliDebug(1, Form("Setting Address for Branch Plane_%02d", iPlane));
132  digitsTree->SetBranchAddress(Form("Plane_%02d",iPlane), &(*fDigits)[iPlane]);
133  }
134 
135  digitsTree->GetEntry(0);
136 
137  AliDebug(1, "Creating clusterFinder");
139  clusterFinder->ApplyMisalignment(kTRUE); // only in case of MC !!!
140  clusterFinder->Init("");
141  clusterFinder->MakeClusterBranch(clustersTree);
142  clusterFinder->SetClusterTreeAddress(clustersTree);
143  clusterFinder->DigitsToClusters(fDigits);
144  clustersTree->Fill(); // fill tree for current event
145  delete clusterFinder;
146 
147  for (Int_t iPlane=0; iPlane<AliMFTConstants::kNDisks; iPlane++) {
148  AliDebug(1, Form("fDigits->At(%d)->Clear()",iPlane));
149  ((TClonesArray*)fDigits->At(iPlane))->Delete();
150  }
151 
152 }
153 
154 //====================================================================================================================================================
155 
157  AliInfo("CreateTracker");
158 
159  // Create a MFT tracker: global MUON+MFT tracks
160 
161  // AliMFTTrackerMU *tracker = new AliMFTTrackerMU(); // tracker for muon tracks (MFT + MUON)
162  AliMFTTracker *tracker = new AliMFTTracker(); // tracker for MFT tracks
163 
164  return tracker;
165 
166 }
167 
168 //====================================================================================================================================================
169 
171 
172  AliInfo("Not implemented");
173 
174  // Create a MFT tracker: standalone MFT tracks
175 
176  // AliMFTTrackerSA *tracker = new AliMFTTrackerSA(); // tracker for MFT tracks
177 
178  return NULL;
179 
180 }
181 
182 //====================================================================================================================================================
183 
void LoadSegmentation()
Creates the virtual Segmentation from the XML file /ITSMFT/MFT/data/AliMFTGeometry.xml.
virtual AliTracker * CreateTrackleter() const
#define TObjArray
void MakeClusterBranch(TTree *treeCluster)
void SetClusterTreeAddress(TTree *treeCluster)
return clusterFinder
#define AliInfo(message)
Definition: AliLog.h:484
static AliMFTGeometry * Instance()
Retuns MFT Geometry singleton object.
void ApplyMisalignment(Bool_t applyMisalignment)
void DigitsToClusters(const TObjArray *pDigitList)
virtual void Clear(const Option_t *)
#define AliDebug(logLevel, message)
Definition: AliLog.h:300
virtual void Reconstruct(TTree *digitsTree, TTree *clustersTree) const
virtual AliTracker * CreateTracker() const
static const Int_t kNDisks
Number of Disk.
Class for the creation of the "standalone MFT tracks".
Definition: AliMFTTracker.h:34
Class Handling both Virutal Segmentation and Real Volumes.
void Init(const Char_t *nameGeomFile)