30 #include <TObjArray.h>
35 #include "AliAnalysisTask.h"
36 #include "AliAnalysisManager.h"
37 #include "AliESDEvent.h"
38 #include "AliESDInputHandler.h"
39 #include "AliTriggerAnalysis.h"
41 #include "AliCounterCollection.h"
51 AliAnalysisTaskSE(name),
56 fCounterCandleTrig(0),
57 fCounterCandleNotTrig(0)
64 DefineOutput(1, TList::Class());
65 DefineOutput(2, AliCounterCollection::Class());
66 DefineOutput(3, AliCounterCollection::Class());
67 DefineOutput(4, AliCounterCollection::Class());
68 DefineOutput(5, AliCounterCollection::Class());
121 fCounterTrigg =
new AliCounterCollection(
"Triggered_Counter");
122 fCounterTrigg->AddRubric(
"Event",
"triggered/v0andONLINE/v0andOFFLINE/v0andOFF&ON/v0andON_notOFF/v0andOFF_notON/v0orOFF/V0orON");
127 fCounterNotTrigg->AddRubric(
"Event",
"!triggered/v0andONLINE/v0andOFFLINE/v0andOFF&ON/v0andON_notOFF/v0andOFF_notON/v0orOFF/v0orON");
132 fCounterCandleTrig->AddRubric(
"Event",
"triggered/candles02/2xcandles02/primVtx/TPConly");
158 Printf(
"ERROR: fESD not available");
161 AliESDEvent* esdE = (AliESDEvent*) InputEvent();
163 Printf(
"ERROR: fESD not available");
169 if(esdE->GetEventType()!=7 )
return;
171 Int_t runNumber = (Int_t)esdE->GetRunNumber();
174 Bool_t eventTriggered = 0;
176 Bool_t flag02 = kFALSE;
177 Bool_t flagPVT = kFALSE;
178 Bool_t flagTPCOnly70 = kFALSE;
181 eventTriggered = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
184 AliTriggerAnalysis *trigAnalys =
new AliTriggerAnalysis();
187 Bool_t v0andOFF = kFALSE;
188 Bool_t v0orOFF = kFALSE;
190 v0C = trigAnalys->IsOfflineTriggerFired(esdE , AliTriggerAnalysis::kV0C);
192 if(v0A&&v0C)v0andOFF=kTRUE;
193 if (v0A||v0C)v0orOFF=kTRUE;
196 Int_t v0Con = trigAnalys->V0Trigger(esdE, AliTriggerAnalysis::kCSide, kTRUE, kFALSE);
197 Int_t v0Aon = trigAnalys->V0Trigger(esdE, AliTriggerAnalysis::kASide, kTRUE, kFALSE);
199 Bool_t v0andON=kFALSE;
200 if((v0Aon==AliTriggerAnalysis::kV0BB)&&(v0Con==AliTriggerAnalysis::kV0BB))v0andON=kTRUE;
202 Bool_t v0orON =((v0Aon==AliTriggerAnalysis::kV0BB)||(v0Con==AliTriggerAnalysis::kV0BB));
204 Int_t trkEntries = (Int_t)esdE->GetNumberOfTracks();
206 for(Int_t i=0;i<trkEntries;i++){
207 AliESDtrack *track=(AliESDtrack*)esdE->GetTrack(i);
208 UShort_t nClusTPC=track->GetTPCNcls();
211 if((track->GetStatus()&AliESDtrack::kTPCin)&&TMath::Abs(track->Eta()<0.9)&&nClusTPC>=70){
218 if((nClusTPC>=70)&&(track->GetStatus()&AliESDtrack::kITSrefit)&&(track->GetStatus()&AliESDtrack::kTPCrefit)){
219 if((track->Pt()>0.2)){
220 if(!flag02) flag02=kTRUE;
227 const AliESDVertex *vtrc1 = esdE->GetPrimaryVertex();
228 if(vtrc1 && vtrc1->GetNContributors()>0) flagPVT=kTRUE;
233 fCounterTrigg->Count(Form(
"Event:triggered/Run:%d", runNumber));
234 if (v0andON)
fCounterTrigg->Count(Form(
"Event:v0andONLINE/Run:%d", runNumber));
235 if (v0andOFF)
fCounterTrigg->Count(Form(
"Event:v0andOFFLINE/Run:%d", runNumber));
236 if (v0andON&&v0andOFF)
fCounterTrigg->Count(Form(
"Event:v0andOFF&ON/Run:%d", runNumber));
237 if (v0andON&&!v0andOFF)
fCounterTrigg->Count(Form(
"Event:v0andON_notOFF/Run:%d", runNumber));
238 if (!v0andON&&v0andOFF)
fCounterTrigg->Count(Form(
"Event:v0andOFF_notON/Run:%d", runNumber));
239 if (v0orON)
fCounterTrigg->Count(Form(
"Event:v0orON/Run:%d", runNumber));
240 if (v0orOFF)
fCounterTrigg->Count(Form(
"Event:v0orOFF/Run:%d", runNumber));
243 if (flagTPCOnly70)
fCounterCandleTrig->Count(Form(
"Event:TPConly/Run:%d", runNumber));
250 if (v0andON)
fCounterNotTrigg->Count(Form(
"Event:v0andONLINE/Run:%d", runNumber));
251 if (v0andOFF)
fCounterNotTrigg->Count(Form(
"Event:v0andOFFLINE/Run:%d", runNumber));
252 if (v0andON&&v0andOFF)
fCounterNotTrigg->Count(Form(
"Event:v0andOFF&ON/Run:%d", runNumber));
253 if (v0andON&&!v0andOFF)
fCounterNotTrigg->Count(Form(
"Event:v0andON_notOFF/Run:%d", runNumber));
254 if (!v0andON&&v0andOFF)
fCounterNotTrigg->Count(Form(
"Event:v0andOFF_notON/Run:%d", runNumber));
255 if (v0orON)
fCounterNotTrigg->Count(Form(
"Event:v0orON/Run:%d", runNumber));
256 if (v0orOFF)
fCounterNotTrigg->Count(Form(
"Event:v0orOFF/Run:%d", runNumber));
282 fOutput =
dynamic_cast<TList*
> (GetOutputData(1));
284 Printf(
"ERROR: fOutput not available");
288 fCounterTrigg =
dynamic_cast<AliCounterCollection*
> (GetOutputData(2));
290 Printf(
"ERROR: fCounterTrigg not available");
296 Printf(
"ERROR: fCounterNotTrigg not available");
302 Printf(
"ERROR: fCounterCandleTrig not available");
308 Printf(
"ERROR: fCounterCandleNotTrig not available");
AliCounterCollection * fCounterNotTrigg
! counter for the differents not triggered events.
Class for monitoring of information used for open charm normalization (triggers, candles, ...)
virtual void Terminate(Option_t *)
virtual ~AliAnalysisTaskSEMonitNorm()
AliCounterCollection * fCounterCandleNotTrig
! counter for candles in the triggered events (esd)
virtual void UserCreateOutputObjects()
AliCounterCollection * fCounterTrigg
! counter for the differents triggered events.
virtual void UserExec(Option_t *option)
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
AliCounterCollection * fCounterCandleTrig
! counter for candles in the triggered events (esd)
AliAnalysisTaskSEMonitNorm(const char *name="AliAnalysisTaskSEMonitNorm")
TList * fOutput
ESD object.