]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONClusterReconstructor.cxx
- Adding possibility to handle Jpsi (default is Upsilon) in efficiency
[u/mrichter/AliRoot.git] / MUON / AliMUONClusterReconstructor.cxx
CommitLineData
52c9bc11 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//
cf464691 20// MUON cluster reconstructor for MUON
52c9bc11 21//
cf464691 22// Should implement a virtual class ClusterFinder to chose between VS and AZ method
52c9bc11 23////////////////////////////////////
24
52c9bc11 25#include "AliMUONClusterReconstructor.h"
cf464691 26#include "AliRun.h" // for gAlice
27#include "AliRunLoader.h"
28#include "AliLoader.h"
29
a713db22 30#include "AliMUON.h"
52c9bc11 31#include "AliMUONDigit.h"
32#include "AliMUONConstants.h"
33#include "AliMUONData.h"
34#include "AliMUONClusterFinderVS.h"
52c9bc11 35#include "AliMUONClusterInput.h"
36#include "AliMUONRawCluster.h"
8c343c7c 37#include "AliLog.h"
cf464691 38
52c9bc11 39ClassImp(AliMUONClusterReconstructor) // Class implementation in ROOT context
40
41//__________________________________________________________________________
1197ff51 42 AliMUONClusterReconstructor::AliMUONClusterReconstructor(AliLoader* loader, AliMUONData* data)
5ac16716 43 : TObject()
52c9bc11 44{
30178c30 45 // Standard Constructor
52c9bc11 46
47 // initialize loader's
48 fLoader = loader;
49
50 // initialize container
1197ff51 51 if (data == 0x0)
5ac16716 52 fMUONData = new AliMUONData(fLoader,"MUON","MUON");
1197ff51 53 else
54 fMUONData = data;
55
7e4a628d 56 // reconstruction model
57 fRecModel = new AliMUONClusterFinderVS();
58 //fRecModel = new AliMUONClusterFinderAZ();
52c9bc11 59
30178c30 60}
52c9bc11 61
30178c30 62//__________________________________________________________________________
63AliMUONClusterReconstructor::AliMUONClusterReconstructor()
64 : TObject(),
30178c30 65 fMUONData(0),
5ac16716 66 fRecModel(0),
30178c30 67 fLoader(0)
68{
69 // Default Constructor
52c9bc11 70}
30178c30 71
52c9bc11 72//_______________________________________________________________________
30178c30 73AliMUONClusterReconstructor::AliMUONClusterReconstructor (const AliMUONClusterReconstructor& rhs)
74 : TObject(rhs)
52c9bc11 75{
30178c30 76// Protected copy constructor
77
8c343c7c 78 AliFatal("Not implemented.");
52c9bc11 79}
80
30178c30 81//_______________________________________________________________________
82AliMUONClusterReconstructor &
83AliMUONClusterReconstructor::operator=(const AliMUONClusterReconstructor& rhs)
52c9bc11 84{
30178c30 85// Protected assignement operator
86
87 if (this == &rhs) return *this;
88
8c343c7c 89 AliFatal("Not implemented.");
30178c30 90
91 return *this;
52c9bc11 92}
93
94//__________________________________________________________________________
95AliMUONClusterReconstructor::~AliMUONClusterReconstructor(void)
96{
7e4a628d 97
52c9bc11 98 if (fMUONData)
99 delete fMUONData;
5ac16716 100 if (fRecModel)
101 delete fRecModel;
52c9bc11 102
103 return;
104}
105//____________________________________________________________________
cc87ebcd 106void AliMUONClusterReconstructor::Digits2Clusters(Int_t chBeg)
a713db22 107{
108
109 TClonesArray *dig1, *dig2, *digAll;
f29ba3e1 110 Int_t ndig, k, idDE, idDEprev;
a713db22 111 dig1 = new TClonesArray("AliMUONDigit",1000);
112 dig2 = new TClonesArray("AliMUONDigit",1000);
113 digAll = new TClonesArray("AliMUONDigit",2000);
114
115 AliMUONDigit* digit;
116
f7db2071 117 TArrayI id(200); // contains the different IdDE
118
a713db22 119
120// Loop on chambers and on cathode planes
121 TClonesArray* muonDigits;
122 Int_t n2;
123 Int_t n1;
935b9895 124
cc87ebcd 125 fMUONData->ResetDigits(); //AZ
126 fMUONData->GetDigits(); //AZ
127
128 for (Int_t ich = chBeg; ich < AliMUONConstants::NTrackingCh(); ich++) {
f7db2071 129
130 id.Reset();
a713db22 131 n1 = 0;
132 n2 = 0;
935b9895 133 //cathode 0 & 1
cc87ebcd 134 //fMUONData->ResetDigits();
135 //fMUONData->GetDigits();
136
a713db22 137 muonDigits = fMUONData->Digits(ich);
138 ndig = muonDigits->GetEntriesFast();
139 TClonesArray &lDigit = *digAll;
140
f29ba3e1 141 idDEprev = 0;
935b9895 142 muonDigits->Sort();
a713db22 143 for (k = 0; k < ndig; k++) {
144
145 digit = (AliMUONDigit*) muonDigits->UncheckedAt(k);
146 new(lDigit[n1++]) AliMUONDigit(*digit);
147 idDE = digit->DetElemId();
f29ba3e1 148 if (idDE != idDEprev) {
a713db22 149 id.AddAt(idDE,n2++);
f7db2071 150 }
f29ba3e1 151 idDEprev = idDE;
a713db22 152 }
153
f7db2071 154 Int_t idSize = n2;
a713db22 155
f7db2071 156 // loop over id DE
157 for (idDE = 0; idDE < idSize; idDE++) {
a713db22 158 TClonesArray &lhits1 = *dig1;
52c9bc11 159 TClonesArray &lhits2 = *dig2;
677975f0 160 dig1->Clear();
161 dig2->Clear();
a713db22 162 n1 = n2 = 0;
163
164 for (k = 0; k < digAll->GetEntriesFast(); k++) {
165 digit = (AliMUONDigit*) digAll->UncheckedAt(k);
f7db2071 166 // printf("digit idDE %d\n", digit->DetElemId());
167 if (id[idDE] == digit->DetElemId()) {
677975f0 168 if (digit->Cathode() == 0)
a713db22 169 new(lhits1[n1++]) AliMUONDigit(*digit);
170 else
171 new(lhits2[n2++]) AliMUONDigit(*digit);
f7db2071 172 }
52c9bc11 173 }
174
a713db22 175 // cluster finder
176 if (fRecModel) {
177 AliMUONClusterInput::Instance()->SetDigits(ich, id[idDE], dig1, dig2);
178 fRecModel->FindRawClusters();
52c9bc11 179 }
180 // copy into the container
7e4a628d 181 TClonesArray* tmp = fRecModel->GetRawClusters();
52c9bc11 182 for (Int_t id = 0; id < tmp->GetEntriesFast(); id++) {
183 AliMUONRawCluster* pClus = (AliMUONRawCluster*) tmp->At(id);
184 fMUONData->AddRawCluster(ich, *pClus);
185 }
186 dig1->Delete();
187 dig2->Delete();
f7db2071 188 } // idDE
189 digAll->Delete();
52c9bc11 190 } // for ich
191 delete dig1;
192 delete dig2;
a713db22 193 delete digAll;
52c9bc11 194}
cf464691 195
7e4a628d 196//_______________________________________________________________________
197void AliMUONClusterReconstructor::Trigger2Trigger()
198{
199// copy trigger from TreeD to TreeR
cc87ebcd 200
201 fMUONData->SetTreeAddress("GLT");
7e4a628d 202 fMUONData->GetTriggerD();
203}