ROOT logo
#include "TMath.h"
#include "TH1D.h"
#include "TH2D.h"
#include "TSeqCollection.h"
#include "TObjArray.h"
#include "TObjArray.h"
#include "TChain.h"
#include "TMCProcess.h"
#include "TLorentzVector.h"
#include "TDirectory.h"
#include "TROOT.h"
#include "TNtuple.h"

#include "AliLog.h"
#include "AliVParticle.h"
#include "AliMCParticle.h"
#include "AliStack.h"
#include "AliVEvent.h"
#include "AliESDEvent.h"
#include "AliMCEvent.h"
#include "AliESDVZERO.h"
#include "AliESDZDC.h"
#include "AliESDtrack.h"
#include "AliFlowTrackCuts.h"
#include "AliFlowEventCuts.h"
#include "AliMultiplicity.h"
#include "AliESDtrackCuts.h"
#include "AliVertex.h"
#include "AliFlowEventSimple.h"
#include "AliFlowEvent.h"
#include "AliFlowVector.h"
#include "AliESDPmdTrack.h"
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisManager.h"
#include "AliInputEventHandler.h"

#include "AliAnalysisTaskQAPmdflow.h"

ClassImp(AliAnalysisTaskQAPmdflow)

//________________________________________________________________________
AliAnalysisTaskQAPmdflow::AliAnalysisTaskQAPmdflow()
  : AliAnalysisTaskSE(),
    fOutput(NULL),
    fEventCuts(NULL),
    fRPTrackCuts(NULL),
    fPOITrackCuts(NULL)
{
  // Default constructor
}

//________________________________________________________________________
AliAnalysisTaskQAPmdflow::AliAnalysisTaskQAPmdflow(const char* name)
  : AliAnalysisTaskSE(name),
    fOutput(NULL),
    fEventCuts(NULL),
    fRPTrackCuts(NULL),
    fPOITrackCuts(NULL)
{
  // Constructor
  DefineOutput(1, TObjArray::Class());
}

//________________________________________________________________________
void AliAnalysisTaskQAPmdflow::UserCreateOutputObjects()
{
  // Called once at the beginning
  fOutput=new TObjArray();
  
  //define histograms
  TH1F* histB = new TH1F("PMD ADC cutB","PMD ADC cutB",500,0,10000);
  fOutput->Add(histB); 

  TH1F* histA = new TH1F("PMD ADC cutA","PMD ADC cutA",500,0,10000);
  fOutput->Add(histA); 

  TH1F* histCelB = new TH1F("PMD ncell CutB", "PMD ncell CutB",100,0,100);
  fOutput->Add(histCelB); 
  TH1F* histCelA = new TH1F("PMD ncell CutA", "PMD ncell CutA",100,0,100);
  fOutput->Add(histCelA);
  
  //post data here as it doesn't change anyway (the pointer to list anyway)

  PostData(1, fOutput);
}

//________________________________________________________________________
void AliAnalysisTaskQAPmdflow::UserExec(Option_t *)
{
  //get teh input data
  AliESDEvent* event = dynamic_cast<AliESDEvent*>(InputEvent());
  if (!event)
    {
      AliFatal("no ESD event");
      return;
    }

  fRPTrackCuts->SetEvent(event);

  AliFlowTrackCuts::trackParameterType sourceRP = fRPTrackCuts->GetParamType();
  AliFlowTrackCuts::trackParameterType sourcePOI = fPOITrackCuts->GetParamType();
  Bool_t PmdTrRp = kFALSE;
  Bool_t PmdTrPoi = kFALSE;
  
  if(sourcePOI == 4) PmdTrPoi = kTRUE;
  if(sourceRP  == 4) PmdTrRp = kTRUE;
  if((!PmdTrPoi) && (!PmdTrRp))
    {
      printf("Error : PMD track is not used as POI or RP");
      return;
    }
  
  TH1F* hPmdAdcB = static_cast<TH1F*>(fOutput->At(0));
  TH1F* hPmdAdcA = static_cast<TH1F*>(fOutput->At(1));
  TH1F* hPmdNcelB = static_cast<TH1F*>(fOutput->At(2));
  TH1F* hPmdNcelA = static_cast<TH1F*>(fOutput->At(3));
  
  //Bool_t passevent = fEventCuts->IsSelected(event);
  //Bool_t isSelectedEventSelection = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB);

  Int_t ntracks = 0;
  
  if(PmdTrRp) ntracks = fRPTrackCuts->GetNumberOfInputObjects();
  if(PmdTrPoi) ntracks = fPOITrackCuts->GetNumberOfInputObjects();
    
  for (Int_t i=0; i < ntracks; i++)
    {
      Bool_t pass = kFALSE;
      TObject* obj = 0x0;
      if(PmdTrPoi){
	obj = fPOITrackCuts->GetInputObject(i);
	if (!obj) continue;
	pass = fPOITrackCuts->IsSelected(obj,i);
      }
      
      if(PmdTrRp){
	obj = fRPTrackCuts->GetInputObject(i);
	if (!obj) continue;
	pass = fRPTrackCuts->IsSelected(obj,i);
      }
      AliESDPmdTrack* trackpmd = dynamic_cast<AliESDPmdTrack*>(obj);
      if (trackpmd)
	{
	  Int_t   det   = trackpmd->GetDetector();
	  Float_t adc   = trackpmd->GetClusterADC(); 
	  Float_t ncel  = trackpmd->GetClusterCells(); 
	  if(det == 0){
	  hPmdAdcB->Fill(adc); if(pass) hPmdAdcA->Fill(adc);
	  hPmdNcelB->Fill(ncel); if(pass) hPmdNcelA->Fill(ncel); 
	  }
	}
    }
}

//________________________________________________________________________
void AliAnalysisTaskQAPmdflow::Terminate(Option_t *)
{
  //terminate
  
}

//________________________________________________________________________
AliAnalysisTaskQAPmdflow::~AliAnalysisTaskQAPmdflow()
{
  //dtor
  delete fRPTrackCuts;
  delete fPOITrackCuts;
  delete fEventCuts;
}

 AliAnalysisTaskQAPmdflow.cxx:1
 AliAnalysisTaskQAPmdflow.cxx:2
 AliAnalysisTaskQAPmdflow.cxx:3
 AliAnalysisTaskQAPmdflow.cxx:4
 AliAnalysisTaskQAPmdflow.cxx:5
 AliAnalysisTaskQAPmdflow.cxx:6
 AliAnalysisTaskQAPmdflow.cxx:7
 AliAnalysisTaskQAPmdflow.cxx:8
 AliAnalysisTaskQAPmdflow.cxx:9
 AliAnalysisTaskQAPmdflow.cxx:10
 AliAnalysisTaskQAPmdflow.cxx:11
 AliAnalysisTaskQAPmdflow.cxx:12
 AliAnalysisTaskQAPmdflow.cxx:13
 AliAnalysisTaskQAPmdflow.cxx:14
 AliAnalysisTaskQAPmdflow.cxx:15
 AliAnalysisTaskQAPmdflow.cxx:16
 AliAnalysisTaskQAPmdflow.cxx:17
 AliAnalysisTaskQAPmdflow.cxx:18
 AliAnalysisTaskQAPmdflow.cxx:19
 AliAnalysisTaskQAPmdflow.cxx:20
 AliAnalysisTaskQAPmdflow.cxx:21
 AliAnalysisTaskQAPmdflow.cxx:22
 AliAnalysisTaskQAPmdflow.cxx:23
 AliAnalysisTaskQAPmdflow.cxx:24
 AliAnalysisTaskQAPmdflow.cxx:25
 AliAnalysisTaskQAPmdflow.cxx:26
 AliAnalysisTaskQAPmdflow.cxx:27
 AliAnalysisTaskQAPmdflow.cxx:28
 AliAnalysisTaskQAPmdflow.cxx:29
 AliAnalysisTaskQAPmdflow.cxx:30
 AliAnalysisTaskQAPmdflow.cxx:31
 AliAnalysisTaskQAPmdflow.cxx:32
 AliAnalysisTaskQAPmdflow.cxx:33
 AliAnalysisTaskQAPmdflow.cxx:34
 AliAnalysisTaskQAPmdflow.cxx:35
 AliAnalysisTaskQAPmdflow.cxx:36
 AliAnalysisTaskQAPmdflow.cxx:37
 AliAnalysisTaskQAPmdflow.cxx:38
 AliAnalysisTaskQAPmdflow.cxx:39
 AliAnalysisTaskQAPmdflow.cxx:40
 AliAnalysisTaskQAPmdflow.cxx:41
 AliAnalysisTaskQAPmdflow.cxx:42
 AliAnalysisTaskQAPmdflow.cxx:43
 AliAnalysisTaskQAPmdflow.cxx:44
 AliAnalysisTaskQAPmdflow.cxx:45
 AliAnalysisTaskQAPmdflow.cxx:46
 AliAnalysisTaskQAPmdflow.cxx:47
 AliAnalysisTaskQAPmdflow.cxx:48
 AliAnalysisTaskQAPmdflow.cxx:49
 AliAnalysisTaskQAPmdflow.cxx:50
 AliAnalysisTaskQAPmdflow.cxx:51
 AliAnalysisTaskQAPmdflow.cxx:52
 AliAnalysisTaskQAPmdflow.cxx:53
 AliAnalysisTaskQAPmdflow.cxx:54
 AliAnalysisTaskQAPmdflow.cxx:55
 AliAnalysisTaskQAPmdflow.cxx:56
 AliAnalysisTaskQAPmdflow.cxx:57
 AliAnalysisTaskQAPmdflow.cxx:58
 AliAnalysisTaskQAPmdflow.cxx:59
 AliAnalysisTaskQAPmdflow.cxx:60
 AliAnalysisTaskQAPmdflow.cxx:61
 AliAnalysisTaskQAPmdflow.cxx:62
 AliAnalysisTaskQAPmdflow.cxx:63
 AliAnalysisTaskQAPmdflow.cxx:64
 AliAnalysisTaskQAPmdflow.cxx:65
 AliAnalysisTaskQAPmdflow.cxx:66
 AliAnalysisTaskQAPmdflow.cxx:67
 AliAnalysisTaskQAPmdflow.cxx:68
 AliAnalysisTaskQAPmdflow.cxx:69
 AliAnalysisTaskQAPmdflow.cxx:70
 AliAnalysisTaskQAPmdflow.cxx:71
 AliAnalysisTaskQAPmdflow.cxx:72
 AliAnalysisTaskQAPmdflow.cxx:73
 AliAnalysisTaskQAPmdflow.cxx:74
 AliAnalysisTaskQAPmdflow.cxx:75
 AliAnalysisTaskQAPmdflow.cxx:76
 AliAnalysisTaskQAPmdflow.cxx:77
 AliAnalysisTaskQAPmdflow.cxx:78
 AliAnalysisTaskQAPmdflow.cxx:79
 AliAnalysisTaskQAPmdflow.cxx:80
 AliAnalysisTaskQAPmdflow.cxx:81
 AliAnalysisTaskQAPmdflow.cxx:82
 AliAnalysisTaskQAPmdflow.cxx:83
 AliAnalysisTaskQAPmdflow.cxx:84
 AliAnalysisTaskQAPmdflow.cxx:85
 AliAnalysisTaskQAPmdflow.cxx:86
 AliAnalysisTaskQAPmdflow.cxx:87
 AliAnalysisTaskQAPmdflow.cxx:88
 AliAnalysisTaskQAPmdflow.cxx:89
 AliAnalysisTaskQAPmdflow.cxx:90
 AliAnalysisTaskQAPmdflow.cxx:91
 AliAnalysisTaskQAPmdflow.cxx:92
 AliAnalysisTaskQAPmdflow.cxx:93
 AliAnalysisTaskQAPmdflow.cxx:94
 AliAnalysisTaskQAPmdflow.cxx:95
 AliAnalysisTaskQAPmdflow.cxx:96
 AliAnalysisTaskQAPmdflow.cxx:97
 AliAnalysisTaskQAPmdflow.cxx:98
 AliAnalysisTaskQAPmdflow.cxx:99
 AliAnalysisTaskQAPmdflow.cxx:100
 AliAnalysisTaskQAPmdflow.cxx:101
 AliAnalysisTaskQAPmdflow.cxx:102
 AliAnalysisTaskQAPmdflow.cxx:103
 AliAnalysisTaskQAPmdflow.cxx:104
 AliAnalysisTaskQAPmdflow.cxx:105
 AliAnalysisTaskQAPmdflow.cxx:106
 AliAnalysisTaskQAPmdflow.cxx:107
 AliAnalysisTaskQAPmdflow.cxx:108
 AliAnalysisTaskQAPmdflow.cxx:109
 AliAnalysisTaskQAPmdflow.cxx:110
 AliAnalysisTaskQAPmdflow.cxx:111
 AliAnalysisTaskQAPmdflow.cxx:112
 AliAnalysisTaskQAPmdflow.cxx:113
 AliAnalysisTaskQAPmdflow.cxx:114
 AliAnalysisTaskQAPmdflow.cxx:115
 AliAnalysisTaskQAPmdflow.cxx:116
 AliAnalysisTaskQAPmdflow.cxx:117
 AliAnalysisTaskQAPmdflow.cxx:118
 AliAnalysisTaskQAPmdflow.cxx:119
 AliAnalysisTaskQAPmdflow.cxx:120
 AliAnalysisTaskQAPmdflow.cxx:121
 AliAnalysisTaskQAPmdflow.cxx:122
 AliAnalysisTaskQAPmdflow.cxx:123
 AliAnalysisTaskQAPmdflow.cxx:124
 AliAnalysisTaskQAPmdflow.cxx:125
 AliAnalysisTaskQAPmdflow.cxx:126
 AliAnalysisTaskQAPmdflow.cxx:127
 AliAnalysisTaskQAPmdflow.cxx:128
 AliAnalysisTaskQAPmdflow.cxx:129
 AliAnalysisTaskQAPmdflow.cxx:130
 AliAnalysisTaskQAPmdflow.cxx:131
 AliAnalysisTaskQAPmdflow.cxx:132
 AliAnalysisTaskQAPmdflow.cxx:133
 AliAnalysisTaskQAPmdflow.cxx:134
 AliAnalysisTaskQAPmdflow.cxx:135
 AliAnalysisTaskQAPmdflow.cxx:136
 AliAnalysisTaskQAPmdflow.cxx:137
 AliAnalysisTaskQAPmdflow.cxx:138
 AliAnalysisTaskQAPmdflow.cxx:139
 AliAnalysisTaskQAPmdflow.cxx:140
 AliAnalysisTaskQAPmdflow.cxx:141
 AliAnalysisTaskQAPmdflow.cxx:142
 AliAnalysisTaskQAPmdflow.cxx:143
 AliAnalysisTaskQAPmdflow.cxx:144
 AliAnalysisTaskQAPmdflow.cxx:145
 AliAnalysisTaskQAPmdflow.cxx:146
 AliAnalysisTaskQAPmdflow.cxx:147
 AliAnalysisTaskQAPmdflow.cxx:148
 AliAnalysisTaskQAPmdflow.cxx:149
 AliAnalysisTaskQAPmdflow.cxx:150
 AliAnalysisTaskQAPmdflow.cxx:151
 AliAnalysisTaskQAPmdflow.cxx:152
 AliAnalysisTaskQAPmdflow.cxx:153
 AliAnalysisTaskQAPmdflow.cxx:154
 AliAnalysisTaskQAPmdflow.cxx:155
 AliAnalysisTaskQAPmdflow.cxx:156
 AliAnalysisTaskQAPmdflow.cxx:157
 AliAnalysisTaskQAPmdflow.cxx:158
 AliAnalysisTaskQAPmdflow.cxx:159
 AliAnalysisTaskQAPmdflow.cxx:160
 AliAnalysisTaskQAPmdflow.cxx:161
 AliAnalysisTaskQAPmdflow.cxx:162
 AliAnalysisTaskQAPmdflow.cxx:163
 AliAnalysisTaskQAPmdflow.cxx:164
 AliAnalysisTaskQAPmdflow.cxx:165
 AliAnalysisTaskQAPmdflow.cxx:166
 AliAnalysisTaskQAPmdflow.cxx:167
 AliAnalysisTaskQAPmdflow.cxx:168
 AliAnalysisTaskQAPmdflow.cxx:169
 AliAnalysisTaskQAPmdflow.cxx:170