ROOT logo
#include "TChain.h"

#include "AliAnalysisDataSlot.h"
#include "AliAnalysisDataContainer.h"
#include "AliAnalysisManager.h"
#include "AliMCEvent.h"
#include "AliVEvent.h"
#include "AliTwoParticlePIDCorrKine.h"
#include "AliGenEventHeader.h"
#include "AliCollisionGeometry.h"
#include "AliVEvent.h"
#include "AliVParticle.h"


ClassImp(AliTwoParticlePIDCorrKine)

//____________________________________________| Constructor
AliTwoParticlePIDCorrKine::AliTwoParticlePIDCorrKine():
fEvent(0x0),
fMcHandler(0x0),
  fHistEventsProcessed(0x0),
  fOutputList(0),
  fHistZvtx(0),
  fHistPt(0),
  fHistImpact(0x0),
fZvtxLim(10),
fCentralityFrom("Impact"),
fCentralityEstimator("V0M")

{
  //Default constructor 
}

//____________________________________________| Specific Constructor
AliTwoParticlePIDCorrKine::AliTwoParticlePIDCorrKine(const Char_t* name) :
  AliAnalysisTaskSE(name),
fEvent(0x0),
fMcHandler(0x0),
  fHistEventsProcessed(0x0),
  fOutputList(0),
  fHistZvtx(0),
  fHistPt(0),
  fHistImpact(0x0),
fZvtxLim(10),
fCentralityFrom("Impact"),
fCentralityEstimator("V0M")
{
  // Constructor. Initialization of Inputs and Outputs
  Info("AliTwoParticlePIDCorrKine","Calling Constructor");
  // Output slot #1 writes into a TList container (nevents histogram)
    DefineInput(0, TChain::Class());
    DefineOutput(1,TList::Class()); // Basic output slot (more needed)
}

//____________________________________________| Destructor
AliTwoParticlePIDCorrKine::~AliTwoParticlePIDCorrKine()
{
  // Destructor
  Info("~AliTwoParticlePIDCorrKine","Calling Destructor");
  if (fHistEventsProcessed) delete fHistEventsProcessed;
  if (fOutputList) delete fOutputList;
  if (fHistZvtx) delete fHistZvtx;
  if (fHistPt) delete fHistPt;

}

//___________________________________________________________________________
void AliTwoParticlePIDCorrKine::UserCreateOutputObjects()
{

  //	AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
  //      AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
    
    Info("CreateOutputObjects","CreateOutputObjects of task %s", GetName());
    fOutputList = new TList();
    fOutputList->SetOwner(kTRUE);
    //    fOutputList->SetName("KineTest");


    fHistEventsProcessed = new TH1F("fHistNEvents","fHistEventsProcessed",3,-0.5,2.5) ;
    fHistEventsProcessed->GetXaxis()->SetBinLabel(1,"All events");
    fHistEventsProcessed->GetXaxis()->SetBinLabel(2,"Event within |Ztx| 10cm");
    fHistEventsProcessed->GetXaxis()->SetBinLabel(3,"Good Reconstructed events");
    
    
    fHistPt = new TH1F("fHistPt", "P_{T} distribution", 15, 0.1, 3.1);
    fHistPt->GetXaxis()->SetTitle("P_{T} (GeV/c)");
    fHistPt->GetYaxis()->SetTitle("dN/dP_{T} (c/GeV)");
    fHistPt->SetMarkerStyle(kFullCircle);
    
    fHistZvtx = new TH1F("fHistZvtx", "Zvtx distribution", 40, -20, 20);
    fHistZvtx->GetXaxis()->SetTitle("ZVtx (cm)");
    fHistZvtx->GetYaxis()->SetTitle("Nch");
    fHistZvtx->SetMarkerStyle(kFullCircle);

    fHistImpact = new TH1F ("fHistImpact","ImpactParameter_Dist", 100,0.0,20.0);
    
    fOutputList->Add(fHistEventsProcessed);
    fOutputList->Add(fHistZvtx);
    fOutputList->Add(fHistPt);
    fOutputList->Add(fHistImpact);

    PostData(1, fOutputList);

    
    return;
}



//____________________________________________| User Exec
void AliTwoParticlePIDCorrKine::UserExec(Option_t *)
{
  
 // fMcHandler = dynamic_cast<AliInputEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()); //get handler
//if(!fMCHandler) return;

 fEvent = dynamic_cast<AliVEvent*>(MCEvent());
  if(!fEvent)
    {
      //AliError("event not available");
      return;
    }


    fHistEventsProcessed->Fill(0.0); // # of Event after passing MC cuts
    
    


       
    
    const AliVVertex *vtxMC = fEvent->GetPrimaryVertex();
    Float_t zVtx = vtxMC->GetZ();
    if(TMath::Abs(zVtx) < fZvtxLim)fHistZvtx->Fill(zVtx);
    else return;

fHistEventsProcessed->Fill(1.0);

  Double_t gImpactParameter = 0.;
  //Double_t  gMultiplicity = 0.;
  //Double_t gReactionPlane=0.0;
  //Double_t gCentrality=0.0;

 AliMCEvent *gMCEvent = dynamic_cast<AliMCEvent*>(fEvent);
  if(gMCEvent){
AliCollisionGeometry* headerH = dynamic_cast<AliCollisionGeometry*>(gMCEvent->GenEventHeader());
    if(headerH){
      gImpactParameter = headerH->ImpactParameter();
      //gMultiplicity =    GenMultiplicity(event); //calculate the multiplicity depending on the choice of centrality estimator                                           
      // gReactionPlane=     headerH->ReactionPlaneAngle();
     // gCentrality = (CentralityFrom =="Multiplicity") ? gImpactParameter :gMultiplicity;
    }
}
  
	fHistImpact->Fill(gImpactParameter);
  
     // # of Event after passing MC cuts

    //Printf("MC particles: %d", fEvent->GetNumberOfTracks());
    
    for (Int_t iTracks = 0; iTracks < fEvent->GetNumberOfTracks(); iTracks++) {
        AliVParticle* track = fEvent->GetTrack(iTracks);
       if (!track) {
      //AliError(Form("Could not receive particle %d", iTracks));
      continue;
    }

        fHistPt->Fill(track->Pt());
    }
    
    
    fHistEventsProcessed->Fill(2.0); // # of Event after passing MC cuts

  PostData(1, fOutputList);
  return;
}


//___________________________________________________________________________
void AliTwoParticlePIDCorrKine::Terminate(Option_t*)
{
  
  Info("Terminate","Start and end of Method");
  AliAnalysisTaskSE::Terminate();
    
  fOutputList = dynamic_cast<TList*> (GetOutputData(1));
  if (!fOutputList) {
        Printf("ERROR: Output list not available");
        return;
  }

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