]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/muon/AliAnalysisTaskESDMuonFilter.cxx
Update of the class ESDMuonFilter. New marcros for creating AOD with muon information...
[u/mrichter/AliRoot.git] / PWG3 / muon / AliAnalysisTaskESDMuonFilter.cxx
CommitLineData
8acd5e60 1/**************************************************************************\r
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
3 * *\r
4 * Author: The ALICE Off-line Project. *\r
5 * Contributors are mentioned in the code where appropriate. *\r
6 * *\r
7 * Permission to use, copy, modify and distribute this software and its *\r
8 * documentation strictly for non-commercial purposes is hereby granted *\r
9 * without fee, provided that the above copyright notice appears in all *\r
10 * copies and that both the copyright notice and this permission notice *\r
11 * appear in the supporting documentation. The authors make no claims *\r
12 * about the suitability of this software for any purpose. It is *\r
13 * provided "as is" without express or implied warranty. *\r
14 **************************************************************************/\r
15\r
16// Add the muon tracks to the generic AOD track branch during the \r
17// filtering of the ESD - R. Arnaldi 5/5/08\r
18 \r
19#include <TChain.h>\r
20#include <TFile.h>\r
21\r
22#include "AliAnalysisTaskESDMuonFilter.h"\r
23#include "AliAnalysisManager.h"\r
24#include "AliESDEvent.h"\r
25#include "AliAODEvent.h"\r
26#include "AliESDInputHandler.h"\r
27#include "AliAODHandler.h"\r
28#include "AliAnalysisFilter.h"\r
29#include "AliESDtrack.h"\r
30#include "AliESDMuonTrack.h"\r
31#include "AliESDVertex.h"\r
32#include "AliMultiplicity.h"\r
33#include "AliLog.h"\r
34\r
35ClassImp(AliAnalysisTaskESDMuonFilter)\r
36\r
37////////////////////////////////////////////////////////////////////////\r
38\r
39AliAnalysisTaskESDMuonFilter::AliAnalysisTaskESDMuonFilter():\r
40 AliAnalysisTaskSE(),\r
41 fTrackFilter(0x0)\r
42{\r
43 // Default constructor\r
44}\r
45\r
46AliAnalysisTaskESDMuonFilter::AliAnalysisTaskESDMuonFilter(const char* name):\r
47 AliAnalysisTaskSE(name),\r
48 fTrackFilter(0x0)\r
49{\r
50 // Constructor\r
51}\r
52\r
53void AliAnalysisTaskESDMuonFilter::UserCreateOutputObjects()\r
54{\r
55 // Create the output container\r
56 OutputTree()->GetUserInfo()->Add(fTrackFilter);\r
57}\r
58\r
59void AliAnalysisTaskESDMuonFilter::Init()\r
60{\r
61 // Initialization\r
62 if (fDebug > 1) AliInfo("Init() \n");\r
63}\r
64\r
65\r
66void AliAnalysisTaskESDMuonFilter::UserExec(Option_t */*option*/)\r
67{\r
68 // Execute analysis for current event \r
69 Long64_t ientry = Entry();\r
70 printf("Muon Filter: Analysing event # %5d\n", (Int_t) ientry);\r
71\r
72 ConvertESDtoAOD();\r
73}\r
74\r
75void AliAnalysisTaskESDMuonFilter::ConvertESDtoAOD() \r
76{\r
77 // ESD Muon Filter analysis task executed for each event\r
78 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(InputEvent());\r
79 \r
80 // Define arrays for muons\r
81 Double_t pos[3];\r
82 Double_t p[3];\r
83 Double_t pid[10];\r
84 \r
85 AliAODHeader* header = AODEvent()->GetHeader();\r
86 AliAODTrack *aodTrack = 0x0;\r
87 \r
88 // Access to the AOD container of tracks\r
89 TClonesArray &tracks = *(AODEvent()->GetTracks());\r
90 Int_t jTracks = header->GetRefMultiplicity();\r
91 \r
92 // Read primary vertex from AOD event \r
93 AliAODVertex * primary = AODEvent()->GetPrimaryVertex();\r
94 primary->Print();\r
95 \r
96 // Loop on muon tracks to fill the AOD track branch\r
97 Int_t nMuTracks = esd->GetNumberOfMuonTracks();\r
98 printf("Number of Muon Tracks=%d\n",nMuTracks);\r
99 \r
100 for (Int_t nMuTrack = 0; nMuTrack < nMuTracks; ++nMuTrack) {\r
101\r
102 AliESDMuonTrack *esdMuTrack = esd->GetMuonTrack(nMuTrack); \r
103 \r
104 p[0] = esdMuTrack->Px(); \r
105 p[1] = esdMuTrack->Py(); \r
106 p[2] = esdMuTrack->Pz();\r
107 pos[0] = primary->GetX(); \r
108 pos[1] = primary->GetY(); \r
109 pos[2] = primary->GetZ();\r
110\r
111 // has to be changed once the muon pid is provided by the ESD\r
112 for (Int_t i = 0; i < 10; pid[i++] = 0.); pid[AliAODTrack::kMuon]=1.;\r
113 primary->AddDaughter(aodTrack =\r
114 new(tracks[jTracks++]) AliAODTrack(0, // no ID provided\r
115 0, // no label provided\r
116 p,\r
117 kTRUE,\r
118 pos,\r
119 kFALSE,\r
120 NULL, // no covariance matrix provided\r
121 (Short_t)-99, // no charge provided\r
122 0, // no ITSClusterMap\r
123 pid,\r
124 primary,\r
125 kTRUE, // check if this is right\r
126 kTRUE, // not used for vertex fit\r
127 AliAODTrack::kPrimary)\r
128 );\r
129\r
130 aodTrack->ConvertAliPIDtoAODPID(); \r
131 aodTrack->SetHitsPatternInTrigCh(esdMuTrack->GetHitsPatternInTrigCh());\r
132 Int_t track2Trigger = esdMuTrack->GetMatchTrigger();\r
133 aodTrack->SetMatchTrigger(track2Trigger);\r
134 if (track2Trigger) \r
135 aodTrack->SetChi2MatchTrigger(esdMuTrack->GetChi2MatchTrigger());\r
136 else \r
137 aodTrack->SetChi2MatchTrigger(0.);\r
138 }\r
139\r
140 return;\r
141}\r
142\r
143void AliAnalysisTaskESDMuonFilter::Terminate(Option_t */*option*/)\r
144{\r
145// Terminate analysis\r
146//\r
147 if (fDebug > 1) printf("AnalysisESDfilter: Terminate() \n");\r
148}\r