]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/AliAnalysisTaskPartonDisc.h
end-of-line normalization
[u/mrichter/AliRoot.git] / PWGJE / AliAnalysisTaskPartonDisc.h
index cf5bacbacfec2c670adedcc30ea4d4699178a4f9..58f61439d93a22ae690e405fbb85386f77e5723e 100644 (file)
-#ifndef ALIANALYSISTASKPARTONDISC_H\r
-#define ALIANALYSISTASKPARTONDISC_H\r
-\r
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * \r
- * See cxx source for full Copyright notice */ \r
-\r
-//////////////////////////////////////////////////////\r
-//                                                  //\r
-// Analysis task for parton discrimination studies  //\r
-//                                                  //\r
-//////////////////////////////////////////////////////\r
-\r
-class TH1F;\r
-class TH1I;\r
-class TH2F;\r
-class TH2I;\r
-class TH3F;\r
-class TProfile;\r
-class AliAODEvent;\r
-class AliMCEvent;\r
-class AliAODJet;\r
-class AliAODTrack;\r
-class AliAODMCParticle;\r
-class AliAODVertex;\r
-\r
-#include "AliAnalysisTaskSE.h"\r
-\r
-class AliAnalysisTaskPartonDisc : public AliAnalysisTaskSE {\r
- public:\r
-  AliAnalysisTaskPartonDisc();\r
-  AliAnalysisTaskPartonDisc(const char *name);\r
-  virtual ~AliAnalysisTaskPartonDisc() {}\r
-  \r
-  virtual Bool_t UserNotify();\r
-  virtual void   UserCreateOutputObjects();\r
-  virtual void   UserExec(Option_t *option);\r
-  virtual void   Terminate(const Option_t *);\r
-  \r
-  virtual void SetAODwithMC(Bool_t flag)     {fUseAODMC = flag;}\r
-  virtual void SetMCBranch(const char* mc)   {fBranchMC = mc;}\r
-  virtual void SetRecBranch(const char* rec) {fBranchRec = rec;}\r
-  virtual void SetSecondRecBranch(const char* secrec) {fBranchSecRec = secrec;}\r
-  virtual void SetSqrtS(const Double_t sqrts) {fSqrts = sqrts;}\r
-  virtual void SetXNtX(const Int_t x) {fNtX = x;}\r
-  virtual void SetJetRadius(const Double_t jetradius) {fJetRadius = jetradius;}\r
-  virtual void SetFilterBitTracks(const UInt_t bval) {fFilterBit = bval;}\r
-  virtual void SetFlavorRadius(const Double_t fradius) {fFlavorRadius = fradius;}\r
-  virtual void SetPhojetMC(Bool_t flagmc) {fPhojetMC = flagmc;}\r
-  Int_t        GetMCEventType(AliMCEvent *mcEvent);\r
-  Int_t        GetPhojetEventType(AliMCEvent *mcEvent);\r
-  Bool_t       IsInsideAcceptance(AliAODJet *jet);\r
-  Int_t        GetJetFlavour(AliAODJet *jet, Int_t ntracks,TClonesArray *mcarray);\r
-  Double_t     GetDeltaR(Double_t eta1, Double_t phi1,Double_t eta2, Double_t phi2);\r
-  Int_t        GetNumberOfMcChargedTracks(Int_t percentage,AliAODJet *Jet, Int_t ntracks, TClonesArray *mcarray, Double_t jr);\r
-  Int_t        GetNumberOfChargedTracks(Int_t percentage,AliAODJet *jet, Int_t ntracks, AliAODEvent *aode, Double_t jr);\r
-  virtual void AllocateStaticContainer(Int_t size);\r
-  virtual void InitializeStaticContainer(Int_t size);\r
-  virtual void SortArray(Double_t *pointer, Int_t arraySize);\r
-  Int_t        TracksForPercentage(Double_t *array, Int_t arraysize, Int_t percentage, Double_t jetenergy);\r
-  Bool_t       IsMCTrackInsideThisJet(AliAODMCParticle *MCParticle, AliAODJet *Jet, Double_t jr);\r
-  Bool_t       IsTrackInsideThisJet(AliAODTrack *aodT, AliAODJet *Jet, Double_t jr);\r
-  Bool_t       VertexInJet(AliAODVertex *pvtx, AliAODVertex *vtx, AliAODJet *jet, Double_t jr);\r
-  Double_t     GetEtaValue(Double_t theta) const;\r
-  Double_t     GetThetaAngle(Double_t xval, Double_t yval, Double_t zval);\r
-  Double_t     GetPhiAngle(Double_t xval, Double_t yval);\r
-  virtual void SetAODMCInput(Bool_t b){fUseAODJetInput = b;}\r
-  Double_t     DeltaPhiMC(AliAODJet *jet, AliAODMCParticle *particle);\r
-  Double_t     DeltaEtaMC(AliAODJet *jet, AliAODMCParticle *particle);\r
-  Double_t     DeltaPhiSqMC(AliAODJet *jet, AliAODMCParticle *particle);\r
-  Double_t     DeltaEtaSqMC(AliAODJet *jet, AliAODMCParticle *particle);\r
-  Double_t     DeltaPhiTrack(AliAODJet *jet, AliAODTrack *track);\r
-  Double_t     DeltaEtaTrack(AliAODJet *jet, AliAODTrack *track);\r
-  Double_t     DeltaPhiSqTrack(AliAODJet *jet, AliAODTrack *track);\r
-  Double_t     DeltaEtaSqTrack(AliAODJet *jet, AliAODTrack *track);\r
-  virtual void SetMinPtTrackCut(const Double_t minptval) {fMinpTVal = minptval;}\r
-  static Bool_t NumberOfReadEventsAOD(const char* currFile, Int_t &fNEvents);\r
-  virtual void  SetOnlyMC(Bool_t flagOnlyMC)     {fUseOnlyMC = flagOnlyMC;}\r
-  virtual void  SetCheckMCStatus(Bool_t flagMCStatus)     {fCheckMCStatus = flagMCStatus;}\r
-  virtual void  HasOverlapedCones(TClonesArray *JetArray);\r
-  virtual void  ResetJetFlags();\r
-  virtual void  SetEnablePrints(Bool_t flagEnablePrints) {fEnablePrints = flagEnablePrints;}\r
-  Bool_t        HasPerpendicularCone() const {return fHasPerpCone;}\r
-  virtual void  SetHIEvent(Bool_t flagHIEvent)     {fIsHIevent = flagHIEvent;}\r
-  Int_t         GetNMcChargedTracksAboveThreshold(AliAODJet *jet, Int_t ntracks, TClonesArray *mcarray, Double_t jr);\r
-  Int_t         GetRecalcNTXMc(Int_t percentage, AliAODJet *originaljet, Int_t ntracks, TClonesArray *mcarray, Double_t jr);\r
-  Int_t         GetRecalcNMcChTrUpThr(AliAODJet *jet, Int_t ntracks, TClonesArray *mcarray, Double_t jr);\r
-  Int_t         GetNRecChargedTracksAboveThreshold(AliAODJet *jet, Int_t ntracks, AliAODEvent *aode, Double_t jr);\r
-  Int_t         GetRecalcNTXRec(Int_t percentage,AliAODJet *originaljet, Int_t ntracks, AliAODEvent *aode, Double_t jr);\r
-  Int_t         GetRecalcNRecChTrUpThr(AliAODJet *jet, Int_t ntracks, AliAODEvent *aode, Double_t jr);\r
-  Int_t         TracksForPercentageRecalc(Double_t *array, Int_t arraysize, Int_t percentage, Double_t jetenergy);\r
-  Bool_t        IsTrackInsideExcludedArea(Double_t tracketa, Double_t trackphi, TClonesArray *recojets);\r
-  Double_t      GetV0ExcludedMultiplicity(TClonesArray *recojets);\r
-  virtual void  SetMinPtUE(const Double_t minptvalUE) {fMinpTValUE = minptvalUE;}\r
-  virtual void  SetMaxPtUE(const Double_t maxptvalUE) {fMaxpTValUE = maxptvalUE;}\r
-  virtual void  SetMinPtMC(const Double_t minptvalMC) {fMinpTValMC = minptvalMC;}\r
-  Int_t         GetV0LikeExcludedMultMC(TClonesArray *mcjets, TClonesArray *mcparticles);\r
-  virtual void  SetIncreaseOfExclusionR(const Double_t increaseExclR) {fIncExcR = increaseExclR;}\r
-  virtual void  ForceNotUseTrackRefs(const Bool_t flagForce) {fForceNotTR = flagForce;};\r
-  virtual void  NotExtendDiJetExclusion(const Bool_t flagNotDiJ) {fNotExtDiJEx = flagNotDiJ;};\r
-  virtual void  FillPerpConeHisto(TH3F *currenthisto, Int_t ntracks, AliAODEvent *aode, Int_t CentralityBin, Int_t pTBin);\r
-  virtual void  ForceSkipSingleTrackJets(const Bool_t flagForceSJ) {fForceSkipSJ = flagForceSJ;};\r
-  Bool_t        IsEqualRel(Double_t vA, Double_t vB);\r
-  virtual void  SetEnableJetEtaRestriction(Bool_t flagEnableJetEtaRes) {fIncreasingExcl = flagEnableJetEtaRes;}\r
-  virtual void  SetTrackRandomRejectionPerc(const Double_t perctrackrr) {fTTrackRandomRejection = perctrackrr;}\r
-  virtual void  SetTrackInJetRandomRejectionPerc(const Double_t perctrackijrr) {fJTrackRandomRejection = perctrackijrr;}\r
-  virtual void  SetMinPtCutGlobMult(const Double_t minptglobmult) {fMinPtInGlobMult = minptglobmult;}\r
-\r
- private:\r
-  AliAODEvent *fAOD;         //! AOD object\r
-  Bool_t      fUseAODMC;     // Flag for MC info in the AOD\r
-  Bool_t      fPhojetMC;     // Flag for Phojet MC\r
-  TString     fBranchMC;     // AOD branch name for MC jets\r
-  TString     fBranchRec;    // AOD branch name for reconstructed jets\r
-  TString     fBranchSecRec; // AOD branch name for secondary reconstructed jets \r
-  Double_t    fSqrts;        // Value of sqrt{s}  default 0 to spot errors\r
-  Int_t       fNtX;          // X Value of NTX  default 0 to spot errors\r
-  Double_t    fJetRadius;    // Radius used in jet finding default 0 to spot errors\r
-  Double_t    fFlavorRadius; // Radius used in flavor asignment\r
-  UInt_t      fFilterBit;    // Filterbit value: 16= tracks with standard cuts, 128 = tracks with hit in SDD, 144 (16+128) = all the previous\r
-  TList       *fOutputList;  //! Output list\r
-  TH1F        *fJetPt;      //! Pt spectrum of reco jets\r
-  TH1F        *fJetPtSec;   //! Pt spectrum of secondary reco jets\r
-  TH1F        *fJetPtMC;    //! Pt spectrum of mc jets\r
-  TH2F        *fJetEta;     //! Eta of reco jets\r
-  TH2F        *fJetEtaSec;  //! Eta of secondary reco jets\r
-  TH2F        *fJetPhi;     //! Phi of reco jets\r
-  TH2F        *fJetPhiSec;  //! Phi of secondary reco jets\r
-  TH2F        *fJetEtaMC;   //! Eta of MC jets\r
-  TH2F        *fJetPhiMC;   //! Phi of MC jets\r
-  TH2F        *fPtAODMC;    //! Pt spectrum of MC tracks in AOD \r
-  TH2F        *fPtAOD;      //! Pt spectrum of tracks in AOD (reco MC or real)\r
-  TH2F        *fEtaAODMC;   //! Eta distribution of MC AOD tracks \r
-  TH2F        *fPhiAODMC;   //! Phi distribution of MC AOD tracks \r
-  TH2F        *fEtaAOD;     //! Eta distribution of AOD tracks\r
-  TH2F        *fPhiAOD;     //! Phi distribution of AOD tracks\r
-  TH2F        *fFlavor;     //! Flavor distribution of jets\r
-  TH2F        *fNJetsMC;    //! Number of jets per event in MC\r
-  TH2F        *fNJetsRD;    //! Number of jets per event in real data or reco MC\r
-  TH2F        *fNJetsRDSeco;     //! Number of jets per event in real data or reco MC secondary branch\r
-  TH2F        *fJetsMultPtMC;    //! Jet multiplicity in jet pT in MC\r
-  TH2F        *fJetsMultPtRD;    //! Jet multiplicity in jet pT in real data or reco MC\r
-  static Double_t *fgContainer;     //! static container for track counting\r
-  TH2F        *fNChTr[12];          //! Number of charged tracks in the jets as a function of jet pt (MC)\r
-  TH2F        *fNChTrRD;            //! Number of charged tracks in the jets as a function of jet pt (Real Data)\r
-  TProfile    *fProfNChTrRD;        //! Number of charged tracks in the jets as a function of jet pt (Real Data)\r
-  TH2I        *fProcessPDG[6];      //! Pythia process and pT of the jet\r
-  TH1F        *fHistPtParton[12];   //! Pt distribution of jets per flavor, mc and reco\r
-  TH2F        *fFragPion[6];        //! Fragmentation of jet in pions, jet energy\r
-  TH2F        *fFragKaon[6];        //! Fragmentation of jet in kaons, jet energy\r
-  TH2F        *fFragProton[6];      //! Fragmentation of jet in protons, jet energy\r
-  TH2F        *fHistContainerR4[6];    //! Temporary containers for fragmentation of reco jets R4\r
-  TH2F        *fHistContainerR3[6];    //! Temporary containers for fragmentation of reco jets R3\r
-  TH2F        *fHistContainerR2[6];    //! Temporary containers for fragmentation of reco jets R2\r
-  TH2F        *fFragChargedR4[6];   //! Fragmentation of jet in charged part, jet energy R4\r
-  TH2F        *fFragChargedR3[6];   //! Fragmentation of jet in charged part, jet energy R3\r
-  TH2F        *fFragChargedR2[6];   //! Fragmentation of jet in charged part, jet energy R2\r
-  TH2F        *fFragCandidates[2];  //! Tagged candidates for FF\r
-  TH1F        *fFracQQ;             //! process qq as a function of x_{T} \r
-  TH1F        *fFracGQ;             //! process gq as a function of x_{T} \r
-  TH1F        *fFracGG;             //! process gg as a function of x_{T}\r
-  TH1F        *fFracOutGoingQQ;     //! process outgoing qq as a function of x_{T} \r
-  TH1F        *fFracOutGoingGQ;     //! process outgoing gq as a function of x_{T} \r
-  TH1F        *fFracOutGoingGG;     //! process outgoing gg as a function of x_{T}\r
-  TProfile    *fh1Xsec;             //! xsection from pyxsec.root\r
-  TH1F        *fh1Trials;           //! ntrials from pyxsec.root            \r
-  Short_t      fMpdg;               //! PDG code of mother of parton\r
-  TH2F        *fProcessJetPt;       //! Pythia Process and jet pT \r
-  TH2F        *fFlavorLead;         //! Flavor distribution of the leading jet\r
-  TH2F        *fProcessLeadJetPt;   //! Pythia Process and jet pT of the leading jet\r
-  TH3F        *fPDGMothLPart;       //! PDG code of the mother of the leading parton, leading parton, jet pT\r
-  TH2F        *fFlavProc;           //! Flavor, Flavor status code\r
-  Float_t      fAvgTrials;          //  Average number of trials\r
-  Bool_t       fUseAODJetInput;     //  take MC from input AOD not from output AOD\r
-  Double_t     fMinTrackPtInNTX;    //  Minimum track pT taken into the NTX calculation\r
-  Double_t     fMaxTrackPtInNTX;    //  Maximum track pT taken into the NTX calculation\r
-  TH3F        *fMinTrackPtInNTXh[2];//! Histo to save fMinTrackPtInNTX as a function of jet pT\r
-  TH2F        *fMaxTrackPtInNTXh[2];//! Histo to save fMaxTrackPtInNTX as a function of jet pT\r
-  TH2F        *fSCM[12];            //! Second central moment as a function of jet pt (MC)\r
-  TH2F        *fSCMRD;              //! Second central moment as a function of jet pt (Real Data)\r
-  Double_t     fMinpTVal;           //  Minimum pT track cut for SCM analysis\r
-  TH2F        *fZVertex;            //! Z coordinate vertex position, number of reco jets\r
-  TH1F        *fh1Events;           //! nevents read out from PWG4_JetTasksOutput.root\r
-  Bool_t       fUseOnlyMC;          //  Flag to signal only MC input\r
-  Bool_t       fCheckMCStatus;      //  Flag to check the status of MC, not working for old aliroot\r
-  Bool_t       fJetFlags[16];       //  Flag to mark if this jet is ok (acceptance and no overlap), kTRUE if usable\r
-  Int_t        fEvtCount;           //  Event counter for debugging\r
-  TH2F        *fNAccJetsMC;         //! Number of accepted jets per event in MC\r
-  TH2F        *fNAccJetsRD;         //! Number of accepted jets per event in real data or reco MC\r
-  TH2F        *fNAccJetsRDSeco;     //! Number of jets accepted per event in real data or reco MC secondary branch                    \r
-  Bool_t       fEnablePrints;       //  Flag to enable print outs\r
-  TH1F        *fRecJetPtInclusive;  //! Pt spectrum of inclusive reco jets\r
-  TH1F        *fMCJetPtInclusive;   //! Pt spectrum of inclusive MC jets\r
-  TH1F        *fRecJetPtLeading;    //! Pt spectrum of leading reco jets\r
-  TH1F        *fMCJetPtLeading;     //! Pt spectrum of leading MC jets\r
-  TH1F        *fSecRecJetPtInclusive;  //! Pt spectrum of inclusive reco jets (2nd branch)\r
-  TH1F        *fSecRecJetPtLeading;    //! Pt spectrum of leading reco jets (2nd branch)\r
-  Bool_t       fHasPerpCone;           // Flag to indicate if possible to use a perpendicular jet for bckg\r
-  Double_t     fEtaPerpCoord;          // Eta of perpendicular cone\r
-  Double_t     fPhiPerpCoord;          // Phi of perpendicular cone\r
-  Double_t     fPtPerpCoord;           // pT of perpendicular cone\r
-  Bool_t       fJetEvent;              // Flag to indicate a jet event(in acceptance)\r
-  AliAODJet   *fPerpCone;              // Perpendicular Cone\r
-  TH2F        *fNChTrMCPerp;           //! Number of charged tracks in the perpendicular cone MC\r
-  TH2F        *fNChTrRecPerp;          //! Number of charged tracks in the perpendicular cone Reco or Real\r
-  TH2F        *fSCMMCPerp;             //! Second central moment as a function of jet pt for the perp cone MC\r
-  TH2F        *fSCMRecPerp;            //! Second central moment as a function of jet pt for the perp cone Rec\r
-  Bool_t       fIsHIevent;             // Flag to indicate that is reading a HI event\r
-  Double_t     fCurrentJetMinPtNT90;   // Min pT used in the NT90 calculation of the current jet\r
-  Double_t    *fBckgSbsJet;            //! Current jet, background substracted\r
-  Double_t     fCurrentJetMinPtNT90Recalc;  // Min pT used in the NT90 re-calculation of the current jet \r
-                                            // after energy correction of the jet\r
-  TH2F        *fNChTrCorrMCQuark;           //! Number of charged tracks after jet energy correction, as a function of corrected pT, MC quarks\r
-  TH2F        *fNChTrCorrMCGluon;           //! Number of charged tracks after jet energy correction, as a function of corrected pT, MC gluons\r
-  TH2F        *fNChTrCorrMCPerp;            //! Number of charged tracks in the perpendicular cone MC, after correction\r
-  Bool_t       fIsPossibleToSubstBckg;      //  Flag to signal that there was a perpendicular cone, as is possible to substract background\r
-  TH3F        *fNChTrRecECorr;              //! Number of charged tracks in the energy corrected jet, as a function of corrected jet pt, centrality\r
-  TH3F        *fNChTrRecPerpECorr;          //! Number of charged tracks in the perpendicular after correction, as a func. of corr. jet pt, centrality\r
-  TH1F        *fRefMult;                    //! Reference multiplicity in the AOD\r
-  TH2F        *fNChTrRDMult[8];             //! Number of charged tracks in the jets as a function of jet pt (Real Data), for reference multiplicities in pp\r
-  TH1F        *fNAccJetsRDMult[8];          //! Number of accepted jets per event in real data or reco MC, for reference multiplicities in pp\r
-  Int_t        fCurrentJetCharge;           //  Charge in the current jet\r
-  TH1F        *fTotalJetCharge[8];          //! Charge of this jet (dependent on event multiplicity)\r
-  TH2F        *fRefMultWOJet;               //! Reference multiplicity in the AOD and multiplicity without jets\r
-  TH2F        *fSCMRDMult[8];               //! Second central moment as a function of jet pt (Real Data), for reference multiplicities in pp\r
-  TH2F        *fNChTrRDMultMC[8];           //! Number of charged tracks in the jets as a function of jet pt (MC Data), for reference multiplicities in pp\r
-  TH2F        *fSCMRDMultMC[8];             //! Second central moment as a function of jet pt (MC Data), for reference multiplicities in pp\r
-  TH2F        *fVZEROMult;                  //! Multiplicity in V0A and V0C\r
-  TH2F        *fMultWOJetVZero;             //! Multiplicity without jets, and VZERO multiplicity\r
-  AliAODVZERO *fVZero;                      //! AOD VZERO object\r
-  TH2F        *fNChTrRDMultSE[8];           //! Number of charged tracks in the jets as a function of jet pt (Real Data), for 2nd reference multiplicities in pp\r
-  TH1F        *fNAccJetsRDMultSE[8];        //! Number of accepted jets per event in real data or reco MC, for 2nd reference multiplicities in pp\r
-  TH1F        *fTotalJetChargeSE[8];        //! Charge of this jet (dependent on 2nd event multiplicity)\r
-  TH2F        *fSCMRDMultSE[8];             //! Second central moment as a function of jet pt (Real Data), for 2nd reference multiplicities in pp\r
-  TH2F        *fRefMultFullV0;              //! Reference multiplicity in the AOD and multiplicity from the full V0\r
-  TH2F        *fRefMultV0Corr;              //! Reference multiplicity in the AOD and multiplicity from the V0 sectors with no jets (2 leading)\r
-  TH2F        *fFullV0V0Corr;               //! Multiplicity from the full V0, Multiplicity from the V0 sectors with no jets (2 leading)\r
-  TH3F        *fNTXV0MultPt;                //! NTX, V0 corrected multiplicity, and jet pT\r
-  TH3F        *fNTXCBMultPt;                //! NTX, Central Barrel corrected multiplicity, and jet pT\r
-  TH2F        *fNChTrRDMultOJ[8];           //! Number of charged tracks in the jets as a function of jet pt (Real Data), for reference multiplicities in pp, 1 Jet\r
-  TH2F        *fSCMRDMultOJ[8];             //! Second central moment as a function of jet pt (Real Data), for reference multiplicities in pp, 1 Jet\r
-  TH2F        *fNChTrRDMultSEOJ[8];         //! Number of charged tracks in the jets as a function of jet pt (Real Data), for 2nd reference multiplicities in pp, 1 Jet\r
-  TH2F        *fSCMRDMultSEOJ[8];           //! Second central moment as a function of jet pt (Real Data), for 2nd reference multiplicities in pp, 1 Jet\r
-  Double_t     fMinpTValUE;                 //  Minimum pT track cut for the UE multiplicity, default 2 GeV for debugging\r
-  TH2F        *fRefMultFullV0UJ;            //! Reference multiplicity in the AOD and multiplicity from the full V0, un jet\r
-  TH2F        *fRefMultV0CorrUJ;            //! Reference multiplicity in the AOD and multiplicity from the V0 sectors with no jets (2 leading), un jet\r
-  TH2F        *fFullV0V0CorrUJ;             //! Multiplicity from the full V0, Multiplicity from the V0 sectors with no jets (2 leading), un jet\r
-  TH2F        *fMultWOJetVZeroUJ;           //! Multiplicity without jets, and VZERO multiplicity, un jet\r
-  TH2F        *fRefMultWOJetUJ;             //! Reference multiplicity in the AOD and multiplicity without jets, un jet\r
-  Double_t     fMaxpTValUE;                 //  Maximum pT track cut for the UE multiplicity, default 2 GeV for debugging\r
-  TH2F        *fRefAODTrackCount;           //! Correlation between ref aod mult. and my own counting\r
-  TH2F        *fRefAODTrackCountUJ;         //! Correlation between ref aod mult. and my own counting, single jet event\r
-  TH2F        *fTrackCountWOJet;            //! Correlation between my own counting TPC & soft TPC\r
-  TH2F        *fTrackCountWOJetUJ;          //! Correlation between my own counting TPC & soft TPC UJ\r
-  TH2F        *fTrackCountWOJetUJMC;        //! Correlation between my own counting TPC & soft TPC UJ solo MC\r
-  TH2F        *fFullV0V0CorrUJMC;           //! Multiplicity from the full V0, Multiplicity from the V0 sectors with no jets, un jet MC no real V0\r
-  TH2F        *fNChTrRDMultOJMC[8];         //! Number of charged tracks in the jets as a function of jet pt (MC), for reference multiplicities in pp, 1 Jet\r
-  TH2F        *fSCMRDMultOJMC[8];           //! Second central moment as a function of jet pt (MC), for reference multiplicities in pp, 1 Jet\r
-  TH2F        *fNChTrRDMultSEOJMC[8];       //! Number of charged tracks in the jets as a function of jet pt (MC), for 2nd reference multiplicities in pp, 1 Jet\r
-  TH2F        *fSCMRDMultSEOJMC[8];         //! Second central moment as a function of jet pt (MC), for 2nd reference multiplicities in pp, 1 Jet\r
-  Double_t     fMinpTValMC;                 //  Minimum pT track cut for the MC multiplicity, default 2 GeV for debugging\r
-  Double_t     fIncExcR;                    //  Increase in the exclusion radius value\r
-  Bool_t       fForceNotTR;                 //  Force NOT to use track references\r
-  Bool_t       fNotExtDiJEx;                //  Not extend the exclusion in the dijet area, old behaviour\r
-  TH3F        *fMinTrackPtInNTXRecalc;      //! Histo to save fMinTrackPtInNTX after recalculation as a function of jet pT\r
-  TH2F        *fMaxTrackPtInNTXRecalc;      //! Histo to save fMaxTrackPtInNTX after recalculation as a function of jet pT\r
-  TH3F        *fPtDistInJetConeRaw;         //! pT distributions of tracks inside the cone for jet pT (raw) ranges and centralities\r
-  TH3F        *fPtDistInPerpConeRaw;        //! pT distributions of tracks inside the perpendicular cone for jet pT (raw) ranges and centralities\r
-  TH3F        *fPtInPerpCon;                //! summed pT from the perpendicular cone for jet pT (raw) ranges and centralities\r
-  Double_t     fMinTrackPtInNTXR;           //  Minimum track pT taken into the NTX re-calculation\r
-  Double_t     fMaxTrackPtInNTXR;           //  Maximum track pT taken into the NTX re-calculation\r
-  Double_t     fEventCent;                  //  event centrality\r
-  TH2F        *fNChTrRecPerpMultSEOJ[8];    //! Number of charged tracks in the perpendicular cone reco or real, with multiplicities\r
-  TH1F        *fJetEtaAll;                  //! Eta distribution of all the found jets, no cuts\r
-  TH1F        *fJetEtaOnlyTPCcut;           //! Eta distribution of all the found jets, only with eta acceptance cut\r
-  TH1F        *fJetEtaJetPt[3];             //! Eta distribution of analyzed jets, 3 ranges of pT\r
-  TH3F        *fNChTrRecECorrPPMult;        //! Number of charged tracks in the energy corrected jet, as a function of corrected jet pt, pp mult\r
-  TH3F        *fNChTrRecPerpECorrPPMult;    //! Number of charged tracks in the perpendicular after correction, as a func. of corr. jet pt, pp mult\r
-  Bool_t       fForceSkipSJ;                //  Force to skip single track jets\r
-  TH2F        *fJetPtCentPbPbRaw;           //! Raw pT spectrum of reco jets, centrality in PbPb\r
-  TH2F        *fJetPtCentPbPbCorr;          //! Corrected pT spectrum of reco jets, centrality in PbPb\r
-  Double_t     fJetAcceptance;              //  Acceptance cut on jets, for multiplicity in PbPb\r
-  Bool_t       fIncreasingExcl;             //  Flag to indicate that the analyis increases exclusion beyond jet radius\r
-  TH3F        *fTotTracksCone;              //! total number of tracks in the jet cone, for jet pT (raw) ranges and centralities\r
-  Int_t        fTotTracksInCone;            //  Total number of tracks in the jet cone\r
-\r
-  Double_t     fTTrackRandomRejection;      //  Percentage of tracks from the event randomly rejected\r
-  Double_t     fJTrackRandomRejection;      //  Percentage of tracks from the jet randomly rejected\r
-  TH1F        *fJEtaMCMultOJ[8];            //! Eta distribution of jets as a function of jet pt (MC), for V0-like multiplicities in pp, 1 Jet\r
-  TH1F        *fJEtaMCMultSEOJ[8];          //! Eta distribution of jets as a function of jet pt (MC), for TPC-like multiplicities in pp, 1 Jet\r
-  TH1F        *fJEtaRDMultOJ[8];            //! Eta distribution of jets as a function of jet pt (Reco Data), for V0 multiplicities in pp, 1 Jet\r
-  TH1F        *fJEtaRDMultSEOJ[8];          //! Eta distribution of jets as a function of jet pt (Reco Data), for TPC-like multiplicities in pp, 1 Jet\r
-  TH1F        *fJetPtMCMultOJ[8];           //! Pt spectrum jets (MC), for V0-like multiplicities in pp, 1 jet\r
-  TH1F        *fJetPtMCMultSEOJ[8];         //! Pt spectrum jets (MC), for TPC-like multiplicities in pp, 1 jet\r
-  TH1F        *fJetPtRDMultOJ[8];           //! Pt spectrum jets (Reco Data), for V0 multiplicities in pp, 1 jet\r
-  TH1F        *fJetPtRDMultSEOJ[8];         //! Pt spectrum jets (Reco Data), for TPC multiplicities in pp, 1 jet\r
-  TH2F        *fEntriesQuark[8];            //! Quark NT90 in MC in the multiplicity bins\r
-  TH2F        *fEntriesGluon[8];            //! Gluon NT90 in MC in the multiplicity bins\r
-  Double_t     fMinPtInGlobMult;            //  Min pT used in the global multiplicity calculation\r
-\r
-  AliAnalysisTaskPartonDisc(const AliAnalysisTaskPartonDisc&); // not implemented\r
-  AliAnalysisTaskPartonDisc& operator=(const AliAnalysisTaskPartonDisc&); // not implemented\r
-  \r
-  ClassDef(AliAnalysisTaskPartonDisc, 4); \r
-};\r
-\r
-#endif\r
+#ifndef ALIANALYSISTASKPARTONDISC_H
+#define ALIANALYSISTASKPARTONDISC_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * 
+ * See cxx source for full Copyright notice */ 
+
+//////////////////////////////////////////////////////
+//                                                  //
+// Analysis task for parton discrimination studies  //
+//                                                  //
+//////////////////////////////////////////////////////
+
+class TH1F;
+class TH1I;
+class TH2F;
+class TH2I;
+class TH3F;
+class TProfile;
+class AliAODEvent;
+class AliMCEvent;
+class AliAODJet;
+class AliAODTrack;
+class AliAODMCParticle;
+class AliAODVertex;
+
+#include "AliAnalysisTaskSE.h"
+
+class AliAnalysisTaskPartonDisc : public AliAnalysisTaskSE {
+ public:
+  AliAnalysisTaskPartonDisc();
+  AliAnalysisTaskPartonDisc(const char *name);
+  virtual ~AliAnalysisTaskPartonDisc() {}
+  
+  virtual Bool_t UserNotify();
+  virtual void   UserCreateOutputObjects();
+  virtual void   UserExec(Option_t *option);
+  virtual void   Terminate(const Option_t *);
+  
+  virtual void SetAODwithMC(Bool_t flag)     {fUseAODMC = flag;}
+  virtual void SetMCBranch(const char* mc)   {fBranchMC = mc;}
+  virtual void SetRecBranch(const char* rec) {fBranchRec = rec;}
+  virtual void SetSecondRecBranch(const char* secrec) {fBranchSecRec = secrec;}
+  virtual void SetSqrtS(const Double_t sqrts) {fSqrts = sqrts;}
+  virtual void SetXNtX(const Int_t x) {fNtX = x;}
+  virtual void SetJetRadius(const Double_t jetradius) {fJetRadius = jetradius;}
+  virtual void SetFilterBitTracks(const UInt_t bval) {fFilterBit = bval;}
+  virtual void SetFlavorRadius(const Double_t fradius) {fFlavorRadius = fradius;}
+  virtual void SetPhojetMC(Bool_t flagmc) {fPhojetMC = flagmc;}
+  Int_t        GetMCEventType(AliMCEvent *mcEvent);
+  Int_t        GetPhojetEventType(AliMCEvent *mcEvent);
+  Bool_t       IsInsideAcceptance(AliAODJet *jet);
+  Int_t        GetJetFlavour(AliAODJet *jet, Int_t ntracks,TClonesArray *mcarray);
+  Double_t     GetDeltaR(Double_t eta1, Double_t phi1,Double_t eta2, Double_t phi2);
+  Int_t        GetNumberOfMcChargedTracks(Int_t percentage,AliAODJet *Jet, Int_t ntracks, TClonesArray *mcarray, Double_t jr);
+  Int_t        GetNumberOfChargedTracks(Int_t percentage,AliAODJet *jet, Int_t ntracks, AliAODEvent *aode, Double_t jr);
+  virtual void AllocateStaticContainer(Int_t size);
+  virtual void InitializeStaticContainer(Int_t size);
+  virtual void SortArray(Double_t *pointer, Int_t arraySize);
+  Int_t        TracksForPercentage(Double_t *array, Int_t arraysize, Int_t percentage, Double_t jetenergy);
+  Bool_t       IsMCTrackInsideThisJet(AliAODMCParticle *MCParticle, AliAODJet *Jet, Double_t jr);
+  Bool_t       IsTrackInsideThisJet(AliAODTrack *aodT, AliAODJet *Jet, Double_t jr);
+  Bool_t       VertexInJet(AliAODVertex *pvtx, AliAODVertex *vtx, AliAODJet *jet, Double_t jr);
+  Double_t     GetEtaValue(Double_t theta) const;
+  Double_t     GetThetaAngle(Double_t xval, Double_t yval, Double_t zval);
+  Double_t     GetPhiAngle(Double_t xval, Double_t yval);
+  virtual void SetAODMCInput(Bool_t b){fUseAODJetInput = b;}
+  Double_t     DeltaPhiMC(AliAODJet *jet, AliAODMCParticle *particle);
+  Double_t     DeltaEtaMC(AliAODJet *jet, AliAODMCParticle *particle);
+  Double_t     DeltaPhiSqMC(AliAODJet *jet, AliAODMCParticle *particle);
+  Double_t     DeltaEtaSqMC(AliAODJet *jet, AliAODMCParticle *particle);
+  Double_t     DeltaPhiTrack(AliAODJet *jet, AliAODTrack *track);
+  Double_t     DeltaEtaTrack(AliAODJet *jet, AliAODTrack *track);
+  Double_t     DeltaPhiSqTrack(AliAODJet *jet, AliAODTrack *track);
+  Double_t     DeltaEtaSqTrack(AliAODJet *jet, AliAODTrack *track);
+  virtual void SetMinPtTrackCut(const Double_t minptval) {fMinpTVal = minptval;}
+  static Bool_t NumberOfReadEventsAOD(const char* currFile, Int_t &fNEvents);
+  virtual void  SetOnlyMC(Bool_t flagOnlyMC)     {fUseOnlyMC = flagOnlyMC;}
+  virtual void  SetCheckMCStatus(Bool_t flagMCStatus)     {fCheckMCStatus = flagMCStatus;}
+  virtual void  HasOverlapedCones(TClonesArray *JetArray);
+  virtual void  ResetJetFlags();
+  virtual void  SetEnablePrints(Bool_t flagEnablePrints) {fEnablePrints = flagEnablePrints;}
+  Bool_t        HasPerpendicularCone() const {return fHasPerpCone;}
+  virtual void  SetHIEvent(Bool_t flagHIEvent)     {fIsHIevent = flagHIEvent;}
+  Int_t         GetNMcChargedTracksAboveThreshold(AliAODJet *jet, Int_t ntracks, TClonesArray *mcarray, Double_t jr);
+  Int_t         GetRecalcNTXMc(Int_t percentage, AliAODJet *originaljet, Int_t ntracks, TClonesArray *mcarray, Double_t jr);
+  Int_t         GetRecalcNMcChTrUpThr(AliAODJet *jet, Int_t ntracks, TClonesArray *mcarray, Double_t jr);
+  Int_t         GetNRecChargedTracksAboveThreshold(AliAODJet *jet, Int_t ntracks, AliAODEvent *aode, Double_t jr);
+  Int_t         GetRecalcNTXRec(Int_t percentage,AliAODJet *originaljet, Int_t ntracks, AliAODEvent *aode, Double_t jr);
+  Int_t         GetRecalcNRecChTrUpThr(AliAODJet *jet, Int_t ntracks, AliAODEvent *aode, Double_t jr);
+  Int_t         TracksForPercentageRecalc(Double_t *array, Int_t arraysize, Int_t percentage, Double_t jetenergy);
+  Bool_t        IsTrackInsideExcludedArea(Double_t tracketa, Double_t trackphi, TClonesArray *recojets);
+  Double_t      GetV0ExcludedMultiplicity(TClonesArray *recojets);
+  virtual void  SetMinPtUE(const Double_t minptvalUE) {fMinpTValUE = minptvalUE;}
+  virtual void  SetMaxPtUE(const Double_t maxptvalUE) {fMaxpTValUE = maxptvalUE;}
+  virtual void  SetMinPtMC(const Double_t minptvalMC) {fMinpTValMC = minptvalMC;}
+  Int_t         GetV0LikeExcludedMultMC(TClonesArray *mcjets, TClonesArray *mcparticles);
+  virtual void  SetIncreaseOfExclusionR(const Double_t increaseExclR) {fIncExcR = increaseExclR;}
+  virtual void  ForceNotUseTrackRefs(const Bool_t flagForce) {fForceNotTR = flagForce;};
+  virtual void  NotExtendDiJetExclusion(const Bool_t flagNotDiJ) {fNotExtDiJEx = flagNotDiJ;};
+  virtual void  FillPerpConeHisto(TH3F *currenthisto, Int_t ntracks, AliAODEvent *aode, Int_t CentralityBin, Int_t pTBin);
+  virtual void  ForceSkipSingleTrackJets(const Bool_t flagForceSJ) {fForceSkipSJ = flagForceSJ;};
+  Bool_t        IsEqualRel(Double_t vA, Double_t vB);
+  virtual void  SetEnableJetEtaRestriction(Bool_t flagEnableJetEtaRes) {fIncreasingExcl = flagEnableJetEtaRes;}
+  virtual void  SetTrackRandomRejectionPerc(const Double_t perctrackrr) {fTTrackRandomRejection = perctrackrr;}
+  virtual void  SetTrackInJetRandomRejectionPerc(const Double_t perctrackijrr) {fJTrackRandomRejection = perctrackijrr;}
+  virtual void  SetMinPtCutGlobMult(const Double_t minptglobmult) {fMinPtInGlobMult = minptglobmult;}
+
+ private:
+  AliAODEvent *fAOD;         //! AOD object
+  Bool_t      fUseAODMC;     // Flag for MC info in the AOD
+  Bool_t      fPhojetMC;     // Flag for Phojet MC
+  TString     fBranchMC;     // AOD branch name for MC jets
+  TString     fBranchRec;    // AOD branch name for reconstructed jets
+  TString     fBranchSecRec; // AOD branch name for secondary reconstructed jets 
+  Double_t    fSqrts;        // Value of sqrt{s}  default 0 to spot errors
+  Int_t       fNtX;          // X Value of NTX  default 0 to spot errors
+  Double_t    fJetRadius;    // Radius used in jet finding default 0 to spot errors
+  Double_t    fFlavorRadius; // Radius used in flavor asignment
+  UInt_t      fFilterBit;    // Filterbit value: 16= tracks with standard cuts, 128 = tracks with hit in SDD, 144 (16+128) = all the previous
+  TList       *fOutputList;  //! Output list
+  TH1F        *fJetPt;      //! Pt spectrum of reco jets
+  TH1F        *fJetPtSec;   //! Pt spectrum of secondary reco jets
+  TH1F        *fJetPtMC;    //! Pt spectrum of mc jets
+  TH2F        *fJetEta;     //! Eta of reco jets
+  TH2F        *fJetEtaSec;  //! Eta of secondary reco jets
+  TH2F        *fJetPhi;     //! Phi of reco jets
+  TH2F        *fJetPhiSec;  //! Phi of secondary reco jets
+  TH2F        *fJetEtaMC;   //! Eta of MC jets
+  TH2F        *fJetPhiMC;   //! Phi of MC jets
+  TH2F        *fPtAODMC;    //! Pt spectrum of MC tracks in AOD 
+  TH2F        *fPtAOD;      //! Pt spectrum of tracks in AOD (reco MC or real)
+  TH2F        *fEtaAODMC;   //! Eta distribution of MC AOD tracks 
+  TH2F        *fPhiAODMC;   //! Phi distribution of MC AOD tracks 
+  TH2F        *fEtaAOD;     //! Eta distribution of AOD tracks
+  TH2F        *fPhiAOD;     //! Phi distribution of AOD tracks
+  TH2F        *fFlavor;     //! Flavor distribution of jets
+  TH2F        *fNJetsMC;    //! Number of jets per event in MC
+  TH2F        *fNJetsRD;    //! Number of jets per event in real data or reco MC
+  TH2F        *fNJetsRDSeco;     //! Number of jets per event in real data or reco MC secondary branch
+  TH2F        *fJetsMultPtMC;    //! Jet multiplicity in jet pT in MC
+  TH2F        *fJetsMultPtRD;    //! Jet multiplicity in jet pT in real data or reco MC
+  static Double_t *fgContainer;     //! static container for track counting
+  TH2F        *fNChTr[12];          //! Number of charged tracks in the jets as a function of jet pt (MC)
+  TH2F        *fNChTrRD;            //! Number of charged tracks in the jets as a function of jet pt (Real Data)
+  TProfile    *fProfNChTrRD;        //! Number of charged tracks in the jets as a function of jet pt (Real Data)
+  TH2I        *fProcessPDG[6];      //! Pythia process and pT of the jet
+  TH1F        *fHistPtParton[12];   //! Pt distribution of jets per flavor, mc and reco
+  TH2F        *fFragPion[6];        //! Fragmentation of jet in pions, jet energy
+  TH2F        *fFragKaon[6];        //! Fragmentation of jet in kaons, jet energy
+  TH2F        *fFragProton[6];      //! Fragmentation of jet in protons, jet energy
+  TH2F        *fHistContainerR4[6];    //! Temporary containers for fragmentation of reco jets R4
+  TH2F        *fHistContainerR3[6];    //! Temporary containers for fragmentation of reco jets R3
+  TH2F        *fHistContainerR2[6];    //! Temporary containers for fragmentation of reco jets R2
+  TH2F        *fFragChargedR4[6];   //! Fragmentation of jet in charged part, jet energy R4
+  TH2F        *fFragChargedR3[6];   //! Fragmentation of jet in charged part, jet energy R3
+  TH2F        *fFragChargedR2[6];   //! Fragmentation of jet in charged part, jet energy R2
+  TH2F        *fFragCandidates[2];  //! Tagged candidates for FF
+  TH1F        *fFracQQ;             //! process qq as a function of x_{T} 
+  TH1F        *fFracGQ;             //! process gq as a function of x_{T} 
+  TH1F        *fFracGG;             //! process gg as a function of x_{T}
+  TH1F        *fFracOutGoingQQ;     //! process outgoing qq as a function of x_{T} 
+  TH1F        *fFracOutGoingGQ;     //! process outgoing gq as a function of x_{T} 
+  TH1F        *fFracOutGoingGG;     //! process outgoing gg as a function of x_{T}
+  TProfile    *fh1Xsec;             //! xsection from pyxsec.root
+  TH1F        *fh1Trials;           //! ntrials from pyxsec.root            
+  Short_t      fMpdg;               //! PDG code of mother of parton
+  TH2F        *fProcessJetPt;       //! Pythia Process and jet pT 
+  TH2F        *fFlavorLead;         //! Flavor distribution of the leading jet
+  TH2F        *fProcessLeadJetPt;   //! Pythia Process and jet pT of the leading jet
+  TH3F        *fPDGMothLPart;       //! PDG code of the mother of the leading parton, leading parton, jet pT
+  TH2F        *fFlavProc;           //! Flavor, Flavor status code
+  Float_t      fAvgTrials;          //  Average number of trials
+  Bool_t       fUseAODJetInput;     //  take MC from input AOD not from output AOD
+  Double_t     fMinTrackPtInNTX;    //  Minimum track pT taken into the NTX calculation
+  Double_t     fMaxTrackPtInNTX;    //  Maximum track pT taken into the NTX calculation
+  TH3F        *fMinTrackPtInNTXh[2];//! Histo to save fMinTrackPtInNTX as a function of jet pT
+  TH2F        *fMaxTrackPtInNTXh[2];//! Histo to save fMaxTrackPtInNTX as a function of jet pT
+  TH2F        *fSCM[12];            //! Second central moment as a function of jet pt (MC)
+  TH2F        *fSCMRD;              //! Second central moment as a function of jet pt (Real Data)
+  Double_t     fMinpTVal;           //  Minimum pT track cut for SCM analysis
+  TH2F        *fZVertex;            //! Z coordinate vertex position, number of reco jets
+  TH1F        *fh1Events;           //! nevents read out from PWG4_JetTasksOutput.root
+  Bool_t       fUseOnlyMC;          //  Flag to signal only MC input
+  Bool_t       fCheckMCStatus;      //  Flag to check the status of MC, not working for old aliroot
+  Bool_t       fJetFlags[16];       //  Flag to mark if this jet is ok (acceptance and no overlap), kTRUE if usable
+  Int_t        fEvtCount;           //  Event counter for debugging
+  TH2F        *fNAccJetsMC;         //! Number of accepted jets per event in MC
+  TH2F        *fNAccJetsRD;         //! Number of accepted jets per event in real data or reco MC
+  TH2F        *fNAccJetsRDSeco;     //! Number of jets accepted per event in real data or reco MC secondary branch                    
+  Bool_t       fEnablePrints;       //  Flag to enable print outs
+  TH1F        *fRecJetPtInclusive;  //! Pt spectrum of inclusive reco jets
+  TH1F        *fMCJetPtInclusive;   //! Pt spectrum of inclusive MC jets
+  TH1F        *fRecJetPtLeading;    //! Pt spectrum of leading reco jets
+  TH1F        *fMCJetPtLeading;     //! Pt spectrum of leading MC jets
+  TH1F        *fSecRecJetPtInclusive;  //! Pt spectrum of inclusive reco jets (2nd branch)
+  TH1F        *fSecRecJetPtLeading;    //! Pt spectrum of leading reco jets (2nd branch)
+  Bool_t       fHasPerpCone;           // Flag to indicate if possible to use a perpendicular jet for bckg
+  Double_t     fEtaPerpCoord;          // Eta of perpendicular cone
+  Double_t     fPhiPerpCoord;          // Phi of perpendicular cone
+  Double_t     fPtPerpCoord;           // pT of perpendicular cone
+  Bool_t       fJetEvent;              // Flag to indicate a jet event(in acceptance)
+  AliAODJet   *fPerpCone;              // Perpendicular Cone
+  TH2F        *fNChTrMCPerp;           //! Number of charged tracks in the perpendicular cone MC
+  TH2F        *fNChTrRecPerp;          //! Number of charged tracks in the perpendicular cone Reco or Real
+  TH2F        *fSCMMCPerp;             //! Second central moment as a function of jet pt for the perp cone MC
+  TH2F        *fSCMRecPerp;            //! Second central moment as a function of jet pt for the perp cone Rec
+  Bool_t       fIsHIevent;             // Flag to indicate that is reading a HI event
+  Double_t     fCurrentJetMinPtNT90;   // Min pT used in the NT90 calculation of the current jet
+  Double_t    *fBckgSbsJet;            //! Current jet, background substracted
+  Double_t     fCurrentJetMinPtNT90Recalc;  // Min pT used in the NT90 re-calculation of the current jet 
+                                            // after energy correction of the jet
+  TH2F        *fNChTrCorrMCQuark;           //! Number of charged tracks after jet energy correction, as a function of corrected pT, MC quarks
+  TH2F        *fNChTrCorrMCGluon;           //! Number of charged tracks after jet energy correction, as a function of corrected pT, MC gluons
+  TH2F        *fNChTrCorrMCPerp;            //! Number of charged tracks in the perpendicular cone MC, after correction
+  Bool_t       fIsPossibleToSubstBckg;      //  Flag to signal that there was a perpendicular cone, as is possible to substract background
+  TH3F        *fNChTrRecECorr;              //! Number of charged tracks in the energy corrected jet, as a function of corrected jet pt, centrality
+  TH3F        *fNChTrRecPerpECorr;          //! Number of charged tracks in the perpendicular after correction, as a func. of corr. jet pt, centrality
+  TH1F        *fRefMult;                    //! Reference multiplicity in the AOD
+  TH2F        *fNChTrRDMult[8];             //! Number of charged tracks in the jets as a function of jet pt (Real Data), for reference multiplicities in pp
+  TH1F        *fNAccJetsRDMult[8];          //! Number of accepted jets per event in real data or reco MC, for reference multiplicities in pp
+  Int_t        fCurrentJetCharge;           //  Charge in the current jet
+  TH1F        *fTotalJetCharge[8];          //! Charge of this jet (dependent on event multiplicity)
+  TH2F        *fRefMultWOJet;               //! Reference multiplicity in the AOD and multiplicity without jets
+  TH2F        *fSCMRDMult[8];               //! Second central moment as a function of jet pt (Real Data), for reference multiplicities in pp
+  TH2F        *fNChTrRDMultMC[8];           //! Number of charged tracks in the jets as a function of jet pt (MC Data), for reference multiplicities in pp
+  TH2F        *fSCMRDMultMC[8];             //! Second central moment as a function of jet pt (MC Data), for reference multiplicities in pp
+  TH2F        *fVZEROMult;                  //! Multiplicity in V0A and V0C
+  TH2F        *fMultWOJetVZero;             //! Multiplicity without jets, and VZERO multiplicity
+  AliAODVZERO *fVZero;                      //! AOD VZERO object
+  TH2F        *fNChTrRDMultSE[8];           //! Number of charged tracks in the jets as a function of jet pt (Real Data), for 2nd reference multiplicities in pp
+  TH1F        *fNAccJetsRDMultSE[8];        //! Number of accepted jets per event in real data or reco MC, for 2nd reference multiplicities in pp
+  TH1F        *fTotalJetChargeSE[8];        //! Charge of this jet (dependent on 2nd event multiplicity)
+  TH2F        *fSCMRDMultSE[8];             //! Second central moment as a function of jet pt (Real Data), for 2nd reference multiplicities in pp
+  TH2F        *fRefMultFullV0;              //! Reference multiplicity in the AOD and multiplicity from the full V0
+  TH2F        *fRefMultV0Corr;              //! Reference multiplicity in the AOD and multiplicity from the V0 sectors with no jets (2 leading)
+  TH2F        *fFullV0V0Corr;               //! Multiplicity from the full V0, Multiplicity from the V0 sectors with no jets (2 leading)
+  TH3F        *fNTXV0MultPt;                //! NTX, V0 corrected multiplicity, and jet pT
+  TH3F        *fNTXCBMultPt;                //! NTX, Central Barrel corrected multiplicity, and jet pT
+  TH2F        *fNChTrRDMultOJ[8];           //! Number of charged tracks in the jets as a function of jet pt (Real Data), for reference multiplicities in pp, 1 Jet
+  TH2F        *fSCMRDMultOJ[8];             //! Second central moment as a function of jet pt (Real Data), for reference multiplicities in pp, 1 Jet
+  TH2F        *fNChTrRDMultSEOJ[8];         //! Number of charged tracks in the jets as a function of jet pt (Real Data), for 2nd reference multiplicities in pp, 1 Jet
+  TH2F        *fSCMRDMultSEOJ[8];           //! Second central moment as a function of jet pt (Real Data), for 2nd reference multiplicities in pp, 1 Jet
+  Double_t     fMinpTValUE;                 //  Minimum pT track cut for the UE multiplicity, default 2 GeV for debugging
+  TH2F        *fRefMultFullV0UJ;            //! Reference multiplicity in the AOD and multiplicity from the full V0, un jet
+  TH2F        *fRefMultV0CorrUJ;            //! Reference multiplicity in the AOD and multiplicity from the V0 sectors with no jets (2 leading), un jet
+  TH2F        *fFullV0V0CorrUJ;             //! Multiplicity from the full V0, Multiplicity from the V0 sectors with no jets (2 leading), un jet
+  TH2F        *fMultWOJetVZeroUJ;           //! Multiplicity without jets, and VZERO multiplicity, un jet
+  TH2F        *fRefMultWOJetUJ;             //! Reference multiplicity in the AOD and multiplicity without jets, un jet
+  Double_t     fMaxpTValUE;                 //  Maximum pT track cut for the UE multiplicity, default 2 GeV for debugging
+  TH2F        *fRefAODTrackCount;           //! Correlation between ref aod mult. and my own counting
+  TH2F        *fRefAODTrackCountUJ;         //! Correlation between ref aod mult. and my own counting, single jet event
+  TH2F        *fTrackCountWOJet;            //! Correlation between my own counting TPC & soft TPC
+  TH2F        *fTrackCountWOJetUJ;          //! Correlation between my own counting TPC & soft TPC UJ
+  TH2F        *fTrackCountWOJetUJMC;        //! Correlation between my own counting TPC & soft TPC UJ solo MC
+  TH2F        *fFullV0V0CorrUJMC;           //! Multiplicity from the full V0, Multiplicity from the V0 sectors with no jets, un jet MC no real V0
+  TH2F        *fNChTrRDMultOJMC[8];         //! Number of charged tracks in the jets as a function of jet pt (MC), for reference multiplicities in pp, 1 Jet
+  TH2F        *fSCMRDMultOJMC[8];           //! Second central moment as a function of jet pt (MC), for reference multiplicities in pp, 1 Jet
+  TH2F        *fNChTrRDMultSEOJMC[8];       //! Number of charged tracks in the jets as a function of jet pt (MC), for 2nd reference multiplicities in pp, 1 Jet
+  TH2F        *fSCMRDMultSEOJMC[8];         //! Second central moment as a function of jet pt (MC), for 2nd reference multiplicities in pp, 1 Jet
+  Double_t     fMinpTValMC;                 //  Minimum pT track cut for the MC multiplicity, default 2 GeV for debugging
+  Double_t     fIncExcR;                    //  Increase in the exclusion radius value
+  Bool_t       fForceNotTR;                 //  Force NOT to use track references
+  Bool_t       fNotExtDiJEx;                //  Not extend the exclusion in the dijet area, old behaviour
+  TH3F        *fMinTrackPtInNTXRecalc;      //! Histo to save fMinTrackPtInNTX after recalculation as a function of jet pT
+  TH2F        *fMaxTrackPtInNTXRecalc;      //! Histo to save fMaxTrackPtInNTX after recalculation as a function of jet pT
+  TH3F        *fPtDistInJetConeRaw;         //! pT distributions of tracks inside the cone for jet pT (raw) ranges and centralities
+  TH3F        *fPtDistInPerpConeRaw;        //! pT distributions of tracks inside the perpendicular cone for jet pT (raw) ranges and centralities
+  TH3F        *fPtInPerpCon;                //! summed pT from the perpendicular cone for jet pT (raw) ranges and centralities
+  Double_t     fMinTrackPtInNTXR;           //  Minimum track pT taken into the NTX re-calculation
+  Double_t     fMaxTrackPtInNTXR;           //  Maximum track pT taken into the NTX re-calculation
+  Double_t     fEventCent;                  //  event centrality
+  TH2F        *fNChTrRecPerpMultSEOJ[8];    //! Number of charged tracks in the perpendicular cone reco or real, with multiplicities
+  TH1F        *fJetEtaAll;                  //! Eta distribution of all the found jets, no cuts
+  TH1F        *fJetEtaOnlyTPCcut;           //! Eta distribution of all the found jets, only with eta acceptance cut
+  TH1F        *fJetEtaJetPt[3];             //! Eta distribution of analyzed jets, 3 ranges of pT
+  TH3F        *fNChTrRecECorrPPMult;        //! Number of charged tracks in the energy corrected jet, as a function of corrected jet pt, pp mult
+  TH3F        *fNChTrRecPerpECorrPPMult;    //! Number of charged tracks in the perpendicular after correction, as a func. of corr. jet pt, pp mult
+  Bool_t       fForceSkipSJ;                //  Force to skip single track jets
+  TH2F        *fJetPtCentPbPbRaw;           //! Raw pT spectrum of reco jets, centrality in PbPb
+  TH2F        *fJetPtCentPbPbCorr;          //! Corrected pT spectrum of reco jets, centrality in PbPb
+  Double_t     fJetAcceptance;              //  Acceptance cut on jets, for multiplicity in PbPb
+  Bool_t       fIncreasingExcl;             //  Flag to indicate that the analyis increases exclusion beyond jet radius
+  TH3F        *fTotTracksCone;              //! total number of tracks in the jet cone, for jet pT (raw) ranges and centralities
+  Int_t        fTotTracksInCone;            //  Total number of tracks in the jet cone
+
+  Double_t     fTTrackRandomRejection;      //  Percentage of tracks from the event randomly rejected
+  Double_t     fJTrackRandomRejection;      //  Percentage of tracks from the jet randomly rejected
+  TH1F        *fJEtaMCMultOJ[8];            //! Eta distribution of jets as a function of jet pt (MC), for V0-like multiplicities in pp, 1 Jet
+  TH1F        *fJEtaMCMultSEOJ[8];          //! Eta distribution of jets as a function of jet pt (MC), for TPC-like multiplicities in pp, 1 Jet
+  TH1F        *fJEtaRDMultOJ[8];            //! Eta distribution of jets as a function of jet pt (Reco Data), for V0 multiplicities in pp, 1 Jet
+  TH1F        *fJEtaRDMultSEOJ[8];          //! Eta distribution of jets as a function of jet pt (Reco Data), for TPC-like multiplicities in pp, 1 Jet
+  TH1F        *fJetPtMCMultOJ[8];           //! Pt spectrum jets (MC), for V0-like multiplicities in pp, 1 jet
+  TH1F        *fJetPtMCMultSEOJ[8];         //! Pt spectrum jets (MC), for TPC-like multiplicities in pp, 1 jet
+  TH1F        *fJetPtRDMultOJ[8];           //! Pt spectrum jets (Reco Data), for V0 multiplicities in pp, 1 jet
+  TH1F        *fJetPtRDMultSEOJ[8];         //! Pt spectrum jets (Reco Data), for TPC multiplicities in pp, 1 jet
+  TH2F        *fEntriesQuark[8];            //! Quark NT90 in MC in the multiplicity bins
+  TH2F        *fEntriesGluon[8];            //! Gluon NT90 in MC in the multiplicity bins
+  Double_t     fMinPtInGlobMult;            //  Min pT used in the global multiplicity calculation
+
+  AliAnalysisTaskPartonDisc(const AliAnalysisTaskPartonDisc&); // not implemented
+  AliAnalysisTaskPartonDisc& operator=(const AliAnalysisTaskPartonDisc&); // not implemented
+  
+  ClassDef(AliAnalysisTaskPartonDisc, 4); 
+};
+
+#endif