]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/QA/tasks/AliAnalysisTaskHLTITS.cxx
- fixing compilation warning
[u/mrichter/AliRoot.git] / HLT / QA / tasks / AliAnalysisTaskHLTITS.cxx
1 // $Id$\r
2 \r
3 //**************************************************************************\r
4 //* This file is property of and copyright by the ALICE HLT Project        *\r
5 //* ALICE Experiment at CERN, All rights reserved.                         *\r
6 //*                                                                        *\r
7 //* Primary Authors: Zhongbao Yin <zbyin@mail.ccnu.edu.cn>,                *\r
8 //*                  Kalliopi Kanaki <Kalliopi.Kanaki@ift.uib.no>          *\r
9 //*                  for The ALICE HLT Project.                            *\r
10 //*                                                                        *\r
11 //* Permission to use, copy, modify and distribute this software and its   *\r
12 //* documentation strictly for non-commercial purposes is hereby granted   *\r
13 //* without fee, provided that the above copyright notice appears in all   *\r
14 //* copies and that both the copyright notice and this permission notice   *\r
15 //* appear in the supporting documentation. The authors make no claims     *\r
16 //* about the suitability of this software for any purpose. It is          *\r
17 //* provided "as is" without express or implied warranty.                  *\r
18 //**************************************************************************\r
19 \r
20 /** @file   AliAnalysisTaskHLTITS.cxx\r
21     @author Kalliopi Kanaki\r
22     @date\r
23     @brief\r
24 */\r
25 \r
26 #include <iostream>\r
27 \r
28 #include "TChain.h"\r
29 #include "TTree.h"\r
30 #include "TH1F.h"\r
31 #include "TH2F.h"\r
32 #include "TCanvas.h"\r
33 #include "TVector3.h"\r
34 #include "TString.h"\r
35 #include "TObjArray.h"\r
36 #include "TFile.h"\r
37 \r
38 #include "AliESDEvent.h"\r
39 #include "AliESDRun.h"\r
40 #include "AliESDInputHandler.h"\r
41 \r
42 #include "AliAnalysisTask.h"\r
43 #include "AliAnalysisManager.h"\r
44 #include "AliAnalysisTaskHLTITS.h"\r
45 \r
46 \r
47 ClassImp(AliAnalysisTaskHLTITS)\r
48 \r
49 //===========================================================================================================\r
50 \r
51 AliAnalysisTaskHLTITS::AliAnalysisTaskHLTITS(const char *name)\r
52     : \r
53      AliAnalysisTaskSE(name)\r
54     ,fHistOnlITSsignal(0)\r
55     ,fHistOfflITSsignal(0)\r
56     ,fHistOfflITSsignalTrig(0)\r
57     ,fHistOfflITSsignalNoTrig(0)\r
58     ,fHistOnlITSncls(0)\r
59     ,fHistOfflITSncls(0)\r
60     ,fHistOfflITSnclsTrig(0)\r
61     ,fHistOfflITSnclsNoTrig(0)\r
62 {\r
63   // Constructor\r
64 \r
65   // Define input and output slots here\r
66   // Input slot #0 works with a TChain\r
67   // DefineInput(0, TChain::Class());\r
68   // Output slot #0 writes into a TH1 container\r
69 \r
70   DefineOutput(1, TList::Class());\r
71 }\r
72 \r
73 //----------------------------------------------------------------------------------------------------\r
74 \r
75 void AliAnalysisTaskHLTITS::UserCreateOutputObjects(){\r
76 \r
77   OpenFile(1);\r
78 \r
79   fOutputList = new TList();\r
80   fOutputList->SetName(GetName());\r
81   \r
82   fHistOfflITSsignal = new TH1F("fHistOfflITSsignal","ITS signal (offline)",150, 0, 150); \r
83   fHistOnlITSsignal  = new TH1F("fHistOnlITSsignal", "ITS signal (HLT)",    150, 0, 150);\r
84 \r
85   fHistOfflITSsignalTrig   = new TH1F("fHistOfflITSsignalTrig",  "ITS signal (offline triggered)",    150, 0, 150);  \r
86   fHistOfflITSsignalNoTrig = new TH1F("fHistOfflITSsignalNoTrig","ITS signal (offline not triggered)",150, 0, 150);   \r
87 \r
88   fHistOfflITSncls = new TH1F("fHistOfflITSncls","ITS clusters (offline)",10, 0, 10);  \r
89   fHistOnlITSncls  = new TH1F("fHistOnlITSncls", "ITS clusters (HLT)",    10, 0, 10); \r
90   fHistOfflITSnclsTrig   = new TH1F("fHistOfflITSnclsTrig",  "ITS clusters (offline triggered)",    10, 0, 10);   \r
91   fHistOfflITSnclsNoTrig = new TH1F("fHistOfflITSnclsNoTrig","ITS clusters (offline not triggered)",10, 0, 10);    \r
92 \r
93   \r
94   fOutputList->Add(fHistOfflITSsignal);\r
95   fOutputList->Add(fHistOnlITSsignal);  \r
96   fOutputList->Add(fHistOfflITSsignalTrig);  \r
97   fOutputList->Add(fHistOfflITSsignalNoTrig); \r
98   fOutputList->Add(fHistOfflITSncls); \r
99   fOutputList->Add(fHistOnlITSncls);       \r
100   fOutputList->Add(fHistOfflITSnclsTrig);    \r
101   fOutputList->Add(fHistOfflITSnclsNoTrig);\r
102 }\r
103 \r
104 void AliAnalysisTaskHLTITS::NotifyRun(){\r
105 // This will not work if the active trigger classes change from run to run.\r
106 // Then one has to know all trigger classes before processing the data.\r
107 \r
108   AliESDEvent* evESD = dynamic_cast<AliESDEvent*>(InputEvent());\r
109   TString trgClasses = evESD->GetESDRun()->GetActiveTriggerClasses(); \r
110 \r
111   //fTrgClsArray = trgClasses.Tokenize(" ");\r
112   //cout<<fTrgClsArray->GetEntries()<<endl; \r
113     \r
114   evESD = NULL;\r
115 }\r
116 \r
117 void AliAnalysisTaskHLTITS::UserExec(Option_t *){\r
118 \r
119   AliESDEvent *evESD = dynamic_cast<AliESDEvent*>(InputEvent());\r
120   \r
121   if(!evESD){\r
122       Printf("ERROR: fESD not available");\r
123       return;\r
124   }\r
125   \r
126   AliESDEvent *evHLTESD = 0;\r
127   AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*>(fInputHandler);\r
128    \r
129   if(esdH) evHLTESD = esdH->GetHLTEvent();\r
130     \r
131   if(!evHLTESD){\r
132       Printf("ERROR: HLTesd not available");\r
133       return;\r
134   }\r
135 \r
136   if(evHLTESD->IsHLTTriggerFired()){   \r
137 \r
138      for(Int_t i=0; i<evESD->GetNumberOfTracks(); i++){ \r
139         \r
140          AliESDtrack *esdTrk = evESD->GetTrack(i); \r
141          if(esdTrk->GetITSsignal()>0){  \r
142             fHistOfflITSsignal->Fill(esdTrk->GetITSsignal());\r
143             fHistOfflITSsignalTrig->Fill(esdTrk->GetITSsignal());       \r
144          }\r
145       \r
146         if(esdTrk->fITSncls>0){ \r
147            fHistOfflITSncls->Fill(esdTrk->fITSncls);\r
148            fHistOfflITSnclsTrig->Fill(esdTrk->fITSncls);\r
149         }\r
150      }\r
151   \r
152   } else {\r
153 \r
154     for(Int_t i=0; i<evESD->GetNumberOfTracks(); i++){ \r
155         \r
156         AliESDtrack * esdTrk = evESD->GetTrack(i); \r
157         if(esdTrk->GetITSsignal()>0){   \r
158            fHistOfflITSsignal->Fill(esdTrk->GetITSsignal());\r
159            fHistOfflITSsignalNoTrig->Fill(esdTrk->GetITSsignal());\r
160         }\r
161       \r
162         if(esdTrk->fITSncls>0){ \r
163            fHistOfflITSncls->Fill(esdTrk->fITSncls);\r
164            fHistOfflITSnclsNoTrig->Fill(esdTrk->fITSncls);\r
165         }\r
166     }    \r
167   }\r
168 \r
169   // Post output data.\r
170   PostData(1, fOutputList);\r
171 \r
172  }\r
173 \r
174 void AliAnalysisTaskHLTITS::Terminate(Option_t *){\r
175   /*\r
176   Printf("Number of tracks thru CE: %d", fNtracksThruZ0);\r
177   Printf("Number of tracks thru CE from triggered events: %d", \r
178          fNtracksThruZ0Trig);\r
179   */\r
180 \r
181   // Draw result to the screen\r
182   // Called once at the end of the query\r
183 \r
184   //  TCanvas *c1 = new TCanvas("AliAnalysisTaskHLTITS","Trigger",10,10,510,510);\r
185   //fHistTrigger->DrawCopy("E");\r
186   \r
187 }\r