]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/hfe/AliHFEdebugTreeTaskAOD.cxx
Fix of sigmaZ for crossing tracklets from Alex
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliHFEdebugTreeTaskAOD.cxx
CommitLineData
76d0b522 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// Debug tree task
17//
18// Authors:
19// R.Bailhache <R.Bailhache@gsi.de>
20//
21#include <TBits.h>
22#include <TString.h>
23#include <TArrayI.h>
24
25#include "AliAnalysisManager.h"
26#include "AliCentrality.h"
27#include "AliAODTrack.h"
28#include "AliAODEvent.h"
959ea9d8 29#include "AliAODPid.h"
76d0b522 30#include "AliHFEcuts.h"
31#include "AliHFEextraCuts.h"
32#include "AliInputEventHandler.h"
33#include "AliLog.h"
34#include "AliPIDResponse.h"
35#include "AliVEvent.h"
36#include "AliHFEpidTPC.h"
37#include "TTreeStream.h"
38#include "AliESDtrack.h"
39#include "TClonesArray.h"
40#include "AliAODMCHeader.h"
41#include "AliHFEsignalCuts.h"
42#include "AliAODMCParticle.h"
43#include "AliVTrack.h"
44#include "AliAODVertex.h"
45
46#include "AliHFEdebugTreeTaskAOD.h"
47
48ClassImp(AliHFEdebugTreeTaskAOD)
49
50AliHFEdebugTreeTaskAOD::AliHFEdebugTreeTaskAOD():
51 AliAnalysisTaskSE(),
52 fAODMCHeader(NULL),
53 fAODArrayMCInfo(NULL),
54 fTrackCuts(NULL),
55 fExtraCuts(NULL),
56 fSignalCuts(NULL),
57 fTPCpid(NULL),
58 fEventNumber(0),
59 fNclustersTPC(70),
60 fNclustersTPCPID(0),
61 fNclustersITS(2),
62 fFilename("HFEtree.root"),
959ea9d8 63 fDebugTree(NULL)
76d0b522 64{
65
66}
67
68AliHFEdebugTreeTaskAOD::AliHFEdebugTreeTaskAOD(const char *name):
69 AliAnalysisTaskSE(name),
70 fAODMCHeader(NULL),
71 fAODArrayMCInfo(NULL),
72 fTrackCuts(NULL),
73 fExtraCuts(NULL),
74 fSignalCuts(NULL),
75 fTPCpid(NULL),
76 fEventNumber(0),
77 fNclustersTPC(70),
78 fNclustersTPCPID(0),
79 fNclustersITS(2),
80 fFilename("HFEtree.root"),
959ea9d8 81 fDebugTree(NULL)
76d0b522 82{
83 fTPCpid = new AliHFEpidTPC("QAtpcPID");
84}
85
86AliHFEdebugTreeTaskAOD::~AliHFEdebugTreeTaskAOD(){
87
88 if(fDebugTree) delete fDebugTree;
89 if(fTPCpid) delete fTPCpid;
90}
91
92void AliHFEdebugTreeTaskAOD::UserCreateOutputObjects(){
93 //
94 // Create debug tree, signal cuts and track cuts
95 //
96
97 //printf("test\n");
959ea9d8 98 fDebugTree = new TTreeSRedirector(fFilename.Data());
76d0b522 99
bca6abf5 100 // printf("testa\n");
76d0b522 101 fSignalCuts = new AliHFEsignalCuts("HFEsignalCuts", "HFE MC Signal definition");
102 //printf("testb\n");
103
104 fTrackCuts = new AliHFEcuts("fTrackCuts", "Basic HFE track cuts");
105 fTrackCuts->CreateStandardCuts();
106 fTrackCuts->SetAOD();
107 // Track cuts
108 fTrackCuts->SetMinNClustersTPC(fNclustersTPC);
109 fTrackCuts->SetMinRatioTPCclusters(0);
110 fTrackCuts->SetTPCmodes(AliHFEextraCuts::kFound, AliHFEextraCuts::kFoundOverFindable);
111 fTrackCuts->SetMinNClustersTPCPID(fNclustersTPCPID);
112 fTrackCuts->SetMinNClustersITS(fNclustersITS);
113 // Event cuts
114 fTrackCuts->SetUseMixedVertex(kTRUE);
115 fTrackCuts->SetVertexRange(10.);
116 //printf("testa\n");
117 fTrackCuts->Initialize();
118 //printf("testb\n");
119
120 fExtraCuts = new AliHFEextraCuts("hfeExtraCuts","HFE Extra Cuts");
121
122}
123
124void AliHFEdebugTreeTaskAOD::UserExec(Option_t *){
125 //
126 // User Exec: Fill debug Tree
127 //
128
129 // Get PID response
130 AliPIDResponse *pid = NULL;
131 AliInputEventHandler *handler = dynamic_cast<AliInputEventHandler *>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
132 if(handler){
bca6abf5 133// printf("testb\n");
76d0b522 134 pid = handler->GetPIDResponse();
135 } else {
136 AliError("No Handler");
137 }
138 if(!pid){
bca6abf5 139 // printf("testc\n");
76d0b522 140 AliError("No PID response");
141 return;
142 }
143 if(!fInputEvent) {
144 AliError("No Input event");
145 return;
146 }
147
959ea9d8 148 AliAODTrack copyTrack;
149
76d0b522 150 // MC info
151 Bool_t mcthere = kTRUE;
152 AliAODEvent *aodE = dynamic_cast<AliAODEvent *>(fInputEvent);
bca6abf5 153 if(!aodE){
154 // printf("testd\n");
76d0b522 155 AliError("No AOD Event");
156 return;
157 }
158 fAODMCHeader = dynamic_cast<AliAODMCHeader *>(fInputEvent->FindListObject(AliAODMCHeader::StdBranchName()));
159 if(!fAODMCHeader){
bca6abf5 160 mcthere = kFALSE;
161 // return;
76d0b522 162 }
163 fAODArrayMCInfo = dynamic_cast<TClonesArray *>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
164 if(!fAODArrayMCInfo){
bca6abf5 165 mcthere = kFALSE;
166 // return;
76d0b522 167 }
168 else {
169 fSignalCuts->SetMCAODInfo(fAODArrayMCInfo);
170 fTrackCuts->SetMCEvent(aodE);
171 }
172
173 // Set for track cuts
174 fTrackCuts->SetRecEvent(fInputEvent);
175
176 if(!fTrackCuts->CheckEventCuts("fCutsEvRec", fInputEvent)){
177 AliDebug(1, "Event rejected by the event cuts\n");
178 return;
179 }
180 if(!fExtraCuts){
181 fExtraCuts = new AliHFEextraCuts("hfeExtraCuts","HFE Extra Cuts");
182 }
183 fExtraCuts->SetRecEventInfo(fInputEvent);
184
959ea9d8 185
186
187
76d0b522 188 // Get run number
959ea9d8 189 Int_t run = fInputEvent->GetRunNumber();
190
76d0b522 191 // Derive trigger
192 UInt_t trigger = fInputHandler->IsEventSelected();
193 Bool_t isMBTrigger = trigger & AliVEvent::kMB;
194 Bool_t isCentralTrigger = trigger & AliVEvent::kCentral;
195 Bool_t isSemicentralTrigger = trigger & AliVEvent::kSemiCentral;
196 Bool_t isEMCALTrigger = trigger & AliVEvent::kEMCEJE;
197
198 // Get Primary Vertex
199 const AliVVertex *vertex = fInputEvent->GetPrimaryVertex();
200 Double_t vtx[3];
201 vertex->GetXYZ(vtx);
202 Double_t ncontrib = fInputEvent->GetPrimaryVertex()->GetNContributors();
203
204 // Get centrality
959ea9d8 205 Float_t centrality = -1.;
76d0b522 206 AliCentrality *hicent = fInputEvent->GetCentrality();
959ea9d8 207 centrality = hicent->GetCentralityPercentile("V0M");
208
209 // Store event selection variables
210 (*fDebugTree) << "EventDebug"
211 << "Centrality=" << centrality
212 << "VertexZ=" << vtx[2]
213 << "NumberOfContributors=" << ncontrib
214 << "run=" << run
215 << "\n";
216
217
76d0b522 218
219 // Look for kink mother
220 Int_t numberofvertices = aodE->GetNumberOfVertices();
221 Double_t listofmotherkink[numberofvertices];
222 Int_t numberofmotherkink = 0;
223 //printf("Number of vertices %d\n",numberofvertices);
224 for(Int_t ivertex=0; ivertex < numberofvertices; ivertex++) {
225 AliAODVertex *aodvertex = aodE->GetVertex(ivertex);
226 if(!aodvertex) continue;
227 //printf("Type %d\n",aodvertex->GetType());
228 if(aodvertex->GetType()==AliAODVertex::kKink) {
229 //printf("Find one kink\n");
230 AliAODTrack *mother = (AliAODTrack *) aodvertex->GetParent();
231 if(!mother) continue;
232 Int_t idmother = mother->GetID();
233 listofmotherkink[numberofmotherkink] = idmother;
234 //printf("ID %d\n",idmother);
235 numberofmotherkink++;
236 }
237 }
238 //printf("Number of kink mother in the events %d\n",numberofmotherkink);
959ea9d8 239
240 //
241 // Loop on MC tracks only
242 //
243 AliAODMCParticle *mctrack = NULL;
244 // Monte-Carlo info
245 Double_t eR,vx,vy,vz;
246 Double_t chargemc, etamc, phimc, momentummc, transversemomentummc;
247 Int_t source,pdg,signal;
248 if(mcthere) {
249 for(Int_t itrack = 0; itrack < fAODArrayMCInfo->GetEntriesFast(); itrack++) {
250 mctrack = (AliAODMCParticle *)(fAODArrayMCInfo->At(itrack));
251 if(!mctrack) continue;
252 signal = 0;
253 if(fTrackCuts->CheckParticleCuts(static_cast<UInt_t>(AliHFEcuts::kStepMCGenerated), mctrack)) signal = 1;
254 // Kinematics
255 chargemc = mctrack->Charge() > 0. ? 1. : -1.;
256 momentummc = mctrack->P() * chargemc;
257 transversemomentummc = mctrack->Pt() * chargemc;
258 etamc = mctrack->Eta();
259 phimc = mctrack->Phi();
260 pdg = mctrack->GetPdgCode();
261
262 // Get Production Vertex in radial direction
263 vx = mctrack->Xv();
264 vy = mctrack->Yv();
265 vz = mctrack->Zv();
266 eR = TMath::Sqrt(vx*vx+vy*vy);
267
268 // Get Mother PDG code of the particle
269 Int_t motherPdg = 0;
270 Int_t motherlabel = TMath::Abs(mctrack->GetMother());
271 if(motherlabel >= 0 && motherlabel < fAODArrayMCInfo->GetEntriesFast()){
272 AliAODMCParticle *mother = dynamic_cast<AliAODMCParticle *>(fAODArrayMCInfo->At(motherlabel));
273 if(mother) motherPdg = mother->GetPdgCode();
274 }
275
276 // derive source
277 source = 5;
278 if(fSignalCuts->IsCharmElectron(mctrack)) source = 0;
279 else if(fSignalCuts->IsBeautyElectron(mctrack)) source = 1;
280 else if(fSignalCuts->IsGammaElectron(mctrack)) source = 2;
281 else if(fSignalCuts->IsNonHFElectron(mctrack)) source = 3;
282 else if(TMath::Abs(pdg) == 11) source = 4;
283 else source = 5;
284
285 (*fDebugTree) << "MCDebug"
286 << "centrality=" << centrality
287 << "MBtrigger=" << isMBTrigger
288 << "CentralTrigger=" << isCentralTrigger
289 << "SemicentralTrigger=" << isSemicentralTrigger
290 << "EMCALtrigger=" << isEMCALTrigger
291 << "run=" << run
292 << "p=" << momentummc
293 << "pt=" << transversemomentummc
294 << "eta=" << etamc
295 << "phi=" << phimc
296 << "pdg=" << pdg
297 << "px=" << vx
298 << "py=" << vy
299 << "pz=" << vz
300 << "ProductionVertex=" << eR
301 << "motherPdg=" << motherPdg
302 << "source=" << source
303 << "\n";
304 }
305 }
76d0b522 306
307 // Common variables
959ea9d8 308 Double_t charge, eta, phi, momentum, momentumTPC, transversemomentum;
309
76d0b522 310 //
311 // Loop on reconstructed tracks
312 //
313
314 TArrayI *arraytrack = new TArrayI(fInputEvent->GetNumberOfTracks());
959ea9d8 315 Int_t counterdc=0;
76d0b522 316
317 AliAODTrack *track = 0x0;
76d0b522 318 for(Int_t itrack = 0; itrack < fInputEvent->GetNumberOfTracks(); itrack++){
319 // fill the tree
320 track = dynamic_cast<AliAODTrack *>(fInputEvent->GetTrack(itrack));
321 if(!track) continue;
322 // Cut track (Only basic track cuts)
959ea9d8 323 // printf("testv\n");
76d0b522 324 if(!fTrackCuts->CheckParticleCuts(AliHFEcuts::kNcutStepsMCTrack + AliHFEcuts::kStepRecKineITSTPC, track)) continue;
325 //
326 //printf("testu\n");
959ea9d8 327 Double_t nSigmaTOF = pid->NumberOfSigmasTOF(track, AliPID::kElectron);
328 Double_t nSigmaTPC = pid->NumberOfSigmasTPC(track, AliPID::kElectron);
76d0b522 329 Double_t tPCdEdx = track->GetDetPid() ? track->GetDetPid()->GetTPCsignal() : 0.;
959ea9d8 330 // Eta correction
331 copyTrack.~AliAODTrack();
332 new(&copyTrack) AliAODTrack(*track);
333 if(fTPCpid->HasCentralityCorrection()) fTPCpid->ApplyCentralityCorrection(&copyTrack, static_cast<Double_t>(ncontrib),AliHFEpidObject::kAODanalysis);
334 if(fTPCpid->HasEtaCorrection()) fTPCpid->ApplyEtaCorrection(&copyTrack, AliHFEpidObject::kAODanalysis);
335 Double_t nSigmaTPCcorr = pid->NumberOfSigmasTPC(&copyTrack, AliPID::kElectron);
336 Double_t tPCdEdxcorr = copyTrack.GetDetPid() ? copyTrack.GetDetPid()->GetTPCsignal() : 0.;
76d0b522 337
338 // Kinematics
959ea9d8 339 charge = track->Charge() > 0 ? 1. : -1.;
340 eta = track->Eta();
341 phi = track->Phi();
342 momentum = track->P() * charge;
343 transversemomentum = track->Pt() * charge;
344 momentumTPC = track->GetDetPid() ? track->GetDetPid()->GetTPCmomentum() : track->P();
76d0b522 345
346 // status
347 ULong_t status = track->GetStatus();
348 Int_t itsrefit=0;
349 if((status & AliESDtrack::kITSrefit) == AliESDtrack::kITSrefit) itsrefit = 1;
350 Int_t tpcrefit=0;
351 if((status & AliESDtrack::kTPCrefit) == AliESDtrack::kTPCrefit) tpcrefit = 1;
959ea9d8 352 Int_t tofpid=0;
353 if((status & AliESDtrack::kTOFpid) == AliESDtrack::kTOFpid) tofpid = 1;
76d0b522 354
355 // ITS number of clusters
959ea9d8 356 UChar_t nclustersITS = track->GetITSNcls();
76d0b522 357 // TPC number of clusters (different definitions)
358 UChar_t nclustersTPCfit = track->GetTPCNcls();
959ea9d8 359 UChar_t nclustersTPCall = 0;
76d0b522 360 const TBits &clusterTPC = track->GetTPCClusterMap();
959ea9d8 361 nclustersTPCall = clusterTPC.CountBits();
362 UChar_t nclustersTPCPID = track->GetTPCsignalN();
76d0b522 363 UChar_t nfindableTPC = track->GetTPCNclsF();
364 Double_t clusterRatioTPCfit = 0.0;
365 if((static_cast<Double_t>(nfindableTPC))>0.0) clusterRatioTPCfit = static_cast<Double_t>(nclustersTPCfit)/static_cast<Double_t>(nfindableTPC);
959ea9d8 366 Double_t clusterRatioTPCall = 0.0;
367 if((static_cast<Double_t>(nfindableTPC))>0.0) clusterRatioTPCall = static_cast<Double_t>(nclustersTPCall)/static_cast<Double_t>(nfindableTPC);
368 UChar_t nclustersTPCshared = 0;
369 Float_t ncrossedRowsTPC = track->GetTPCNCrossedRows();
76d0b522 370 const TBits &sharedTPC = track->GetTPCSharedMap();
959ea9d8 371 for(Int_t ibit = 0; ibit < 160; ibit++) if(sharedTPC.TestBitNumber(ibit)) nclustersTPCshared++;
76d0b522 372 // TRD clusters and tracklets
373 UChar_t nclustersTRD = track->GetTRDncls();
374 UChar_t ntrackletsTRDPID = track->GetTRDntrackletsPID();
959ea9d8 375 Int_t nslicesTRD = track->GetDetPid()->GetTRDnSlices();
76d0b522 376 Int_t chi2TRD = track->GetTRDchi2();
959ea9d8 377 AliAODPid* aodpid= track->GetDetPid();
378 Double_t* arraytrdsignals;
6736efd5 379 arraytrdsignals=aodpid->GetTRDslices();
959ea9d8 380 Int_t nslicetemp=0;
381 Int_t trdlayer[6];
382 for(Int_t iplane = 0; iplane < 6; iplane++){
383 trdlayer[iplane]=0;
384 }
385
386 for(Int_t iplane = 0; iplane < 6; iplane++){
387 nslicetemp=0;
388 for(Int_t b=(iplane*8);b<((iplane*8)+8);b++)
389 {
390 if(ntrackletsTRDPID>0)
391 {
392 if(arraytrdsignals[b]>0.001) nslicetemp++;
393 }
394 }
395 if(nslicetemp > 0) trdlayer[iplane]=1;
396 }
397
76d0b522 398 // ITS and TRD acceptance maps
399 UChar_t itsPixel = track->GetITSClusterMap();
959ea9d8 400 Bool_t statusL0 = kFALSE;
401 if(TESTBIT(itsPixel, 0)) statusL0 = kTRUE;
402 Bool_t statusL1 = kFALSE;
403 if(TESTBIT(itsPixel, 1)) statusL1 = kTRUE;
76d0b522 404
405 // HFE DCA
959ea9d8 406 Float_t dcaxy = -999.;
407 Float_t dcaz = -999.;
408 fExtraCuts->GetImpactParameters((AliVTrack *)track,dcaxy,dcaz);
76d0b522 409
410 // Kink
411 Int_t kink = 0;
412 if(fExtraCuts->IsKinkDaughter(track)) kink = 1;
413
414 // kink mother
415 Int_t kinkmotherpass = 0;
416 for(Int_t kinkmother = 0; kinkmother < numberofmotherkink; kinkmother++) {
417 if(track->GetID() == listofmotherkink[kinkmother]) {
418 kinkmotherpass = 1;
419 continue;
420 }
421 }
422
423 // ID track to see if negative
424 Int_t id = track->GetID();
425
426 // Double counted
959ea9d8 427 Int_t doublec = 0;
428 for(Int_t l=0; l < counterdc; l++){
76d0b522 429 Int_t iTrack2 = arraytrack->At(l);
959ea9d8 430 if(iTrack2==id) doublec=1;
76d0b522 431 }
432 //printf("Doublec %d\n",doublec);
433
434 // Add the id at this place
959ea9d8 435 arraytrack->AddAt(id,counterdc);
436 counterdc++;
76d0b522 437
438 // Filter
439 Int_t filter[20];
440 for(Int_t k=0; k<20; k++) {
441 filter[k]=0;
442 Int_t u = 1<<k;
443 if((track->TestFilterBit(u))) {
444 filter[k] = 1;
445 }
446 }
447 Int_t filter0 = filter[0];
448 Int_t filter1 = filter[1];
959ea9d8 449 Int_t filter2 = filter[2];
76d0b522 450 Int_t filter3 = filter[3];
959ea9d8 451 Int_t filter4 = filter[4];
76d0b522 452 Int_t filter5 = filter[5];
453 Int_t filter6 = filter[6];
454 Int_t filter7 = filter[7];
455 Int_t filter8 = filter[8];
456 Int_t filter9 = filter[9];
457 Int_t filter10 = filter[10];
458 Int_t filter11 = filter[11];
459 Int_t filter12 = filter[12];
460 Int_t filter13 = filter[13];
461 Int_t filter14 = filter[14];
462 Int_t filter15 = filter[15];
463 Int_t filter16 = filter[16];
464 Int_t filter17 = filter[17];
465 Int_t filter18 = filter[18];
466 Int_t filter19 = filter[19];
467
468 Int_t eventnb = fEventNumber;
469
470 //printf("track\n");
471
959ea9d8 472 signal = 0;
76d0b522 473 if(mcthere){
474 Int_t label = TMath::Abs(track->GetLabel());
475 if(label && label < fAODArrayMCInfo->GetEntriesFast())
476 mctrack = dynamic_cast<AliAODMCParticle *>(fAODArrayMCInfo->At(label));
477 if(!mctrack) continue;
959ea9d8 478 if(fTrackCuts->CheckParticleCuts(static_cast<UInt_t>(AliHFEcuts::kStepMCGenerated), mctrack)) signal = 1;
76d0b522 479 // Kinematics
480 chargemc = mctrack->Charge() > 0. ? 1. : -1.;
bca6abf5 481 momentummc = mctrack->P() * chargemc;
482 transversemomentummc = mctrack->Pt() * chargemc;
76d0b522 483 etamc = mctrack->Eta();
484 phimc = mctrack->Phi();
485 pdg = mctrack->GetPdgCode();
486
487 // Get Production Vertex in radial direction
488 vx = mctrack->Xv();
489 vy = mctrack->Yv();
490 vz = mctrack->Zv();
959ea9d8 491 eR = TMath::Sqrt(vx*vx+vy*vy);
76d0b522 492
493 // Get Mother PDG code of the particle
494 Int_t motherPdg = 0;
495 Int_t motherlabel = TMath::Abs(mctrack->GetMother());
496 if(motherlabel >= 0 && motherlabel < fAODArrayMCInfo->GetEntriesFast()){
497 AliAODMCParticle *mother = dynamic_cast<AliAODMCParticle *>(fAODArrayMCInfo->At(motherlabel));
498 if(mother) motherPdg = mother->GetPdgCode();
499 }
500
501 // derive source
959ea9d8 502 source = 5;
503 if(fSignalCuts->IsCharmElectron(mctrack)) source = 0;
504 else if(fSignalCuts->IsBeautyElectron(mctrack)) source = 1;
505 else if(fSignalCuts->IsGammaElectron(mctrack)) source = 2;
506 else if(fSignalCuts->IsNonHFElectron(mctrack)) source = 3;
507 else if(TMath::Abs(pdg) == 11) source = 4;
508 else source = 5;
76d0b522 509
510 }
511
512
513 // Fill Tree
514 //printf("Fill\n");
959ea9d8 515 (*fDebugTree) << "PIDdebug"
516 << "centrality=" << centrality
517 << "MBtrigger=" << isMBTrigger
518 << "CentralTrigger=" << isCentralTrigger
519 << "SemicentralTrigger=" << isSemicentralTrigger
520 << "EMCALtrigger=" << isEMCALTrigger
521 << "run=" << run
522 << "eventnb=" << eventnb
523 << "vx=" << vtx[0]
524 << "vy=" << vtx[1]
525 << "vz=" << vtx[2]
526 << "ncontrib=" << ncontrib
527 << "id=" << id
528 << "dc=" << doublec
529 << "p=" << momentum
530 << "ptpc=" << momentumTPC
531 << "pt=" << transversemomentum
532 << "eta=" << eta
533 << "phi=" << phi
534 << "itsrefit=" << itsrefit
535 << "tpcrefit=" << tpcrefit
536 << "tofpid=" << tofpid
537 << "nclustersTPC=" << nclustersTPCfit
538 << "nclustersTPCall=" << nclustersTPCall
539 << "nclustersTPCPID=" << nclustersTPCPID
540 << "nclustersTPCshared=" << nclustersTPCshared
541 << "ncrossedRowsTPC=" << ncrossedRowsTPC
542 << "clusterRatioTPC=" << clusterRatioTPCfit
543 << "clusterRatioTPCall=" << clusterRatioTPCall
544 << "nclustersITS=" << nclustersITS
545 << "nclustersTRD=" << nclustersTRD
546 << "ntrackletsTRD=" << ntrackletsTRDPID
547 << "nslicesTRD=" << nslicesTRD
548 << "trd0=" << trdlayer[0]
549 << "trd1=" << trdlayer[1]
550 << "trd2=" << trdlayer[2]
551 << "trd3=" << trdlayer[3]
552 << "trd4=" << trdlayer[4]
553 << "trd5=" << trdlayer[5]
554 << "chi2TRD=" << chi2TRD
555 << "statusITS0=" << statusL0
556 << "statusITS1=" << statusL1
557 << "TOFsigmaEl=" << nSigmaTOF
558 << "TPCsigmaEl=" << nSigmaTPC
559 << "TPCsigmaElcorr=" << nSigmaTPCcorr
560 << "TPCdEdx=" << tPCdEdx
561 << "TPCdEdxcorr=" << tPCdEdxcorr
562 << "dcaR=" << dcaxy
563 << "dcaZ=" << dcaz
564 << "kinkdaughter=" << kink
565 << "kinkmother=" << kinkmotherpass
566 << "nbofmotherkink=" << numberofmotherkink
567 << "filter0=" << filter0
568 << "filter1=" << filter1
569 << "filter2=" << filter2
570 << "filter3=" << filter3
571 << "filter4=" << filter4
572 << "filter5=" << filter5
573 << "filter6=" << filter6
574 << "filter7=" << filter7
575 << "filter8=" << filter8
576 << "filter9=" << filter9
577 << "filter10=" << filter10
578 << "filter11=" << filter11
579 << "filter12=" << filter12
580 << "filter13=" << filter13
581 << "filter14=" << filter14
582 << "filter15=" << filter15
583 << "filter16=" << filter16
584 << "filter17=" << filter17
585 << "filter18=" << filter18
586 << "filter19=" << filter19
587 << "mcp=" << momentummc
588 << "mcpt=" << transversemomentummc
589 << "mceta=" << etamc
590 << "mcphi=" << phimc
591 << "mcpdg=" << pdg
592 << "source=" << source
593 << "px=" << vx
594 << "py=" << vy
595 << "pz=" << vz
596 << "eR=" << eR
597 << "mccharge=" << chargemc
598 << "signal=" << signal
599 << "\n";
600
76d0b522 601
602 //printf("after\n");
603
604 }
605
606 arraytrack->~TArrayI();
607 fEventNumber++;
608
609
610}
611
612
613void AliHFEdebugTreeTaskAOD::SetFileName(const char *filename){ fFilename = filename; }
614void AliHFEdebugTreeTaskAOD::Terminate(Option_t *){
615
616 if(fDebugTree) delete fDebugTree;
617 fDebugTree=0x0;
618
619}
620