]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/muon/AliAnalysisTaskESDMuonFilter.cxx
Analysis taks for the generation of AOD with muon events (Roberta, Enrico)
[u/mrichter/AliRoot.git] / PWG3 / muon / AliAnalysisTaskESDMuonFilter.cxx
CommitLineData
1d1ea3ce 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// Add the muon tracks to the generic AOD track branch during the
17// filtering of the ESD - R. Arnaldi 5/5/08
aba11173 18
1d1ea3ce 19#include <TChain.h>
20#include <TFile.h>
21
22#include "AliAnalysisTaskESDMuonFilter.h"
23#include "AliAnalysisManager.h"
24#include "AliESDEvent.h"
25#include "AliAODEvent.h"
26#include "AliESDInputHandler.h"
27#include "AliAODHandler.h"
28#include "AliAnalysisFilter.h"
29#include "AliESDtrack.h"
30#include "AliESDMuonTrack.h"
31#include "AliESDVertex.h"
32#include "AliMultiplicity.h"
33#include "AliLog.h"
34
35ClassImp(AliAnalysisTaskESDMuonFilter)
36
37////////////////////////////////////////////////////////////////////////
38
39AliAnalysisTaskESDMuonFilter::AliAnalysisTaskESDMuonFilter():
aba11173 40 AliAnalysisTaskSE(),
41 fTrackFilter(0x0)
1d1ea3ce 42{
43 // Default constructor
44}
45
46AliAnalysisTaskESDMuonFilter::AliAnalysisTaskESDMuonFilter(const char* name):
aba11173 47 AliAnalysisTaskSE(name),
48 fTrackFilter(0x0)
1d1ea3ce 49{
50 // Constructor
51}
52
53void AliAnalysisTaskESDMuonFilter::UserCreateOutputObjects()
54{
55 // Create the output container
aba11173 56 if (fTrackFilter) OutputTree()->GetUserInfo()->Add(fTrackFilter);
1d1ea3ce 57}
58
59void AliAnalysisTaskESDMuonFilter::Init()
60{
61 // Initialization
aba11173 62 if (fDebug > 1) AliInfo("Init() \n");
1d1ea3ce 63}
64
65
66void AliAnalysisTaskESDMuonFilter::UserExec(Option_t */*option*/)
67{
68 // Execute analysis for current event
69 Long64_t ientry = Entry();
70 printf("Muon Filter: Analysing event # %5d\n", (Int_t) ientry);
aba11173 71
1d1ea3ce 72 ConvertESDtoAOD();
73}
74
75void AliAnalysisTaskESDMuonFilter::ConvertESDtoAOD()
76{
77 // ESD Muon Filter analysis task executed for each event
78 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(InputEvent());
aba11173 79
1d1ea3ce 80 // Define arrays for muons
81 Double_t pos[3];
82 Double_t p[3];
83 Double_t pid[10];
aba11173 84
85 // has to be changed once the muon pid is provided by the ESD
86 for (Int_t i = 0; i < 10; pid[i++] = 0.);
87 pid[AliAODTrack::kMuon]=1.;
88
1d1ea3ce 89 AliAODHeader* header = AODEvent()->GetHeader();
90 AliAODTrack *aodTrack = 0x0;
aba11173 91 AliESDMuonTrack *esdMuTrack = 0x0;
92
1d1ea3ce 93 // Access to the AOD container of tracks
94 TClonesArray &tracks = *(AODEvent()->GetTracks());
95 Int_t jTracks = header->GetRefMultiplicity();
96
97 // Read primary vertex from AOD event
aba11173 98 AliAODVertex *primary = AODEvent()->GetPrimaryVertex();
1d1ea3ce 99 primary->Print();
aba11173 100
1d1ea3ce 101 // Loop on muon tracks to fill the AOD track branch
102 Int_t nMuTracks = esd->GetNumberOfMuonTracks();
103 printf("Number of Muon Tracks=%d\n",nMuTracks);
aba11173 104
105 // Update number of positive and negative tracks from AOD event (M.G.)
1d1ea3ce 106 Int_t nPosTracks = header->GetRefMultiplicityPos();
107 Int_t nNegTracks = header->GetRefMultiplicityNeg();
aba11173 108
1d1ea3ce 109 for (Int_t nMuTrack = 0; nMuTrack < nMuTracks; ++nMuTrack) {
aba11173 110 esdMuTrack = esd->GetMuonTrack(nMuTrack);
111
112 if (!esdMuTrack->ContainTrackerData()) continue;
113
114 UInt_t selectInfo = 0;
115 // Track selection
116 if (fTrackFilter) {
117 selectInfo = fTrackFilter->IsSelected(esdMuTrack);
118 if (!selectInfo) {
119 continue;
120 }
121 }
122
123 p[0] = esdMuTrack->Px();
124 p[1] = esdMuTrack->Py();
125 p[2] = esdMuTrack->Pz();
126
127 pos[0] = esdMuTrack->GetNonBendingCoor();
128 pos[1] = esdMuTrack->GetBendingCoor();
129 pos[2] = esdMuTrack->GetZ();
130
131 aodTrack = new(tracks[jTracks++]) AliAODTrack(esdMuTrack->GetUniqueID(), // ID
132 0, // label
133 p, // momentum
134 kTRUE, // cartesian coordinate system
135 pos, // position
136 kFALSE, // isDCA
137 0x0, // covariance matrix
138 esdMuTrack->Charge(), // charge
139 0, // ITSClusterMap
140 pid, // pid
141 primary, // primary vertex
142 kFALSE, // used for vertex fit?
143 kFALSE, // used for primary vertex fit?
144 AliAODTrack::kPrimary,// track type
145 selectInfo);
146
147 aodTrack->SetXYAtDCA(esdMuTrack->GetNonBendingCoorAtDCA(), esdMuTrack->GetBendingCoorAtDCA());
148 aodTrack->SetPxPyPzAtDCA(esdMuTrack->PxAtDCA(), esdMuTrack->PyAtDCA(), esdMuTrack->PzAtDCA());
149 aodTrack->ConvertAliPIDtoAODPID();
150 aodTrack->SetChi2perNDF(esdMuTrack->GetChi2() / (2.*esdMuTrack->GetNHit() - 5.));
151 aodTrack->SetChi2MatchTrigger(esdMuTrack->GetChi2MatchTrigger());
152 aodTrack->SetHitsPatternInTrigCh(esdMuTrack->GetHitsPatternInTrigCh());
153 aodTrack->SetMuonClusterMap(esdMuTrack->GetMuonClusterMap());
154 aodTrack->SetMatchTrigger(esdMuTrack->GetMatchTrigger());
155
156 primary->AddDaughter(aodTrack);
157
158 if (esdMuTrack->Charge() > 0) nPosTracks++;
159 else nNegTracks++;
160 }
161
1d1ea3ce 162 header->SetRefMultiplicity(jTracks);
163 header->SetRefMultiplicityPos(nPosTracks);
164 header->SetRefMultiplicityNeg(nNegTracks);
1d1ea3ce 165}
166
167void AliAnalysisTaskESDMuonFilter::Terminate(Option_t */*option*/)
168{
aba11173 169 // Terminate analysis
170 //
171 if (fDebug > 1) printf("AnalysisESDfilter: Terminate() \n");
1d1ea3ce 172}
aba11173 173