]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/muon/AliAnalysisTaskESDMuonFilter.cxx
fix broke compilation
[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
f70a1b5d 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():
f70a1b5d 40 AliAnalysisTaskSE(),
41 fTrackFilter(0x0)
1d1ea3ce 42{
43 // Default constructor
44}
45
46AliAnalysisTaskESDMuonFilter::AliAnalysisTaskESDMuonFilter(const char* name):
f70a1b5d 47 AliAnalysisTaskSE(name),
48 fTrackFilter(0x0)
1d1ea3ce 49{
50 // Constructor
51}
52
53void AliAnalysisTaskESDMuonFilter::UserCreateOutputObjects()
54{
55 // Create the output container
f70a1b5d 56 if (fTrackFilter) OutputTree()->GetUserInfo()->Add(fTrackFilter);
1d1ea3ce 57}
58
59void AliAnalysisTaskESDMuonFilter::Init()
60{
61 // Initialization
f70a1b5d 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);
f70a1b5d 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());
f70a1b5d 79
1d1ea3ce 80 // Define arrays for muons
81 Double_t pos[3];
82 Double_t p[3];
83 Double_t pid[10];
f70a1b5d 84
1d1ea3ce 85 AliAODHeader* header = AODEvent()->GetHeader();
86 AliAODTrack *aodTrack = 0x0;
f70a1b5d 87
1d1ea3ce 88 // Access to the AOD container of tracks
89 TClonesArray &tracks = *(AODEvent()->GetTracks());
90 Int_t jTracks = header->GetRefMultiplicity();
91
92 // Read primary vertex from AOD event
f70a1b5d 93 AliAODVertex * primary = AODEvent()->GetPrimaryVertex();
1d1ea3ce 94 primary->Print();
f70a1b5d 95
1d1ea3ce 96 // Loop on muon tracks to fill the AOD track branch
97 Int_t nMuTracks = esd->GetNumberOfMuonTracks();
98 printf("Number of Muon Tracks=%d\n",nMuTracks);
f70a1b5d 99
100 // Update number of positive and negative tracks from AOD event (M.G.)
1d1ea3ce 101 Int_t nPosTracks = header->GetRefMultiplicityPos();
102 Int_t nNegTracks = header->GetRefMultiplicityNeg();
f70a1b5d 103
1d1ea3ce 104 for (Int_t nMuTrack = 0; nMuTrack < nMuTracks; ++nMuTrack) {
f70a1b5d 105
106 AliESDMuonTrack *esdMuTrack = esd->GetMuonTrack(nMuTrack);
107
108 UInt_t selectInfo = 0;
109 // Track selection
110 if (fTrackFilter) {
111 selectInfo = fTrackFilter->IsSelected(esdMuTrack);
112 if (!selectInfo) {
113 continue;
114 }
115 }
116 p[0] = esdMuTrack->Px();
117 p[1] = esdMuTrack->Py();
118 p[2] = esdMuTrack->Pz();
119 pos[0] = primary->GetX();
120 pos[1] = primary->GetY();
121 pos[2] = primary->GetZ();
122
123 // has to be changed once the muon pid is provided by the ESD
124 for (Int_t i = 0; i < 10; pid[i++] = 0.); pid[AliAODTrack::kMuon]=1.;
125 primary->AddDaughter(aodTrack =
126 new(tracks[jTracks++]) AliAODTrack(0 , // no ID provided
127 0, // no label provided
128 p,
129 kTRUE,
130 pos,
131 kFALSE,
132 NULL, // no covariance matrix provided
133 esdMuTrack->Charge(),
134 0, // no ITSClusterMap
135 pid,
136 primary,
137 kTRUE, // check if this is right
138 kTRUE, // not used for vertex fit
139 AliAODTrack::kPrimary,
140 selectInfo)
141 );
142
143 if (esdMuTrack->Charge() > 0) nPosTracks++;
144 else nNegTracks++;
145
146 aodTrack->ConvertAliPIDtoAODPID();
147 aodTrack->SetHitsPatternInTrigCh(esdMuTrack->GetHitsPatternInTrigCh());
148 Int_t track2Trigger = esdMuTrack->GetMatchTrigger();
149 aodTrack->SetMatchTrigger(track2Trigger);
150 if (track2Trigger)
151 aodTrack->SetChi2MatchTrigger(esdMuTrack->GetChi2MatchTrigger());
152 else
153 aodTrack->SetChi2MatchTrigger(0.);
154 }
155
1d1ea3ce 156 header->SetRefMultiplicity(jTracks);
157 header->SetRefMultiplicityPos(nPosTracks);
158 header->SetRefMultiplicityNeg(nNegTracks);
f70a1b5d 159
160 return;
1d1ea3ce 161}
162
163void AliAnalysisTaskESDMuonFilter::Terminate(Option_t */*option*/)
164{
f70a1b5d 165// Terminate analysis
166//
167 if (fDebug > 1) printf("AnalysisESDfilter: Terminate() \n");
1d1ea3ce 168}