Bool_t AlidNdPtBackgroundCuts::IsSplittedTrack(AliESDtrack *track1, AliESDtrack *track2)
{
//
- // check whether track is cosmic
+ // check whether track is splitted
//
if(!track1) return kFALSE;
if(!track2) return kFALSE;
//\r
\r
//nClust:chi2PerClust:nClust/nFindableClust:DCAy:DCAz:eta:phi:pt:kinkIdx:isPrim:polarity\r
- Int_t binsRecMCTrackHist[11]={160,80,80,100,100,30,90,ptNbins, 3, 2, 2};\r
- Double_t minRecMCTrackHist[11]={0., 0., 0., -5.,-5.,-1.5, 0., ptMin, -1., 0., 0.};\r
- Double_t maxRecMCTrackHist[11]={160.,10.,1.2, 5.,5.,1.5, 2.*TMath::Pi(), ptMax, 2., 2., 2.};\r
+ Int_t binsRecMCTrackHist[11]={160,80,80,100,100,90,90,ptNbins, 3, 2, 2};\r
+ Double_t minRecMCTrackHist[11]={0., 0., 0., -1.,-1.,-1.5, 0., ptMin, -1., 0., 0.};\r
+ Double_t maxRecMCTrackHist[11]={160.,10.,1.2, 1.,1.,1.5, 2.*TMath::Pi(), ptMax, 2., 2., 2.};\r
\r
fRecMCTrackHist = new THnSparseF("fRecMCTrackHist","nClust:chi2PerClust:nClust/nFindableClust:DCAy:DCAz:eta:phi:pt:kinkIdx:isPrim:polarity",11,binsRecMCTrackHist,minRecMCTrackHist,maxRecMCTrackHist);\r
fRecMCTrackHist->SetBinEdges(7,binsPt);\r
{
public:
enum AnalysisMode { kInvalid = -1, kSPD = 0, kTPC, kTPCITS, kTPCSPDvtx, kTPCSPDvtxUpdate, kTPCTrackSPDvtx, kTPCTrackSPDvtxUpdate, kTPCITSHybrid, kTPCITSHybridTrackSPDvtx, kTPCITSHybridTrackSPDvtxDCArPt, kITSStandAloneTrackSPDvtx,kITSStandAloneTPCTrackSPDvtx, kMCRec };
+
enum ParticleMode { kAllPart = 0, kMCPion, kMCKaon, kMCProton, kPlus, kMinus, kCosmic, kBackgroundTrack, kMCRest, kVZEROCase1, kVZEROCase2};
- enum OutputObject { kInvalidObject = -1, kCutAnalysis = 0, kAnalysis, kCorrection, kSystematics };
+ enum OutputObject { kInvalidObject = -1, kCutAnalysis = 0, kAnalysis, kAnalysisPbPb , kCorrection, kSystematics };
+
enum TrackObject { kInvalidTrackObject = -1, kAllTracks = 0, kAccTracks, kRecTracks, kMCTracks };
enum EventObject { kInvalidEventObject = -1, kAllEvents = 0, kTriggeredEvents, kAccEvents, kRecEvents, kMCEvents };
enum CutSteps { kCutSteps = 3 };
\r
//_____________________________________________________________________________\r
AlidNdPtTask::AlidNdPtTask(const char *name) \r
- : AliAnalysisTask(name, "dNdPt analysis")\r
+ : AliAnalysisTaskSE(name)\r
, fESD(0)\r
, fMC(0)\r
, fOutput(0)\r
// Constructor\r
\r
// Define input and output slots here\r
- DefineInput(0, TChain::Class());\r
- DefineOutput(0, TList::Class());\r
+ DefineOutput(1, TList::Class());\r
\r
// create the list for comparison objects\r
fCompList = new TList;\r
AlidNdPtTask::~AlidNdPtTask()\r
{\r
if(fOutput) delete fOutput; fOutput =0; \r
+ if(fCompList) delete fCompList; fCompList =0; \r
}\r
\r
//____________________________________________________________________________\r
return kTRUE;\r
}\r
\r
-//_____________________________________________________________________________\r
-void AlidNdPtTask::ConnectInputData(Option_t *) \r
-{\r
-// connect input data \r
-// called once\r
-\r
- TTree *tree = dynamic_cast<TTree*> (GetInputData(0));\r
- if (!tree) {\r
- Printf("ERROR: Could not read chain from input slot 0");\r
- return;\r
- }\r
-\r
- AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());\r
-\r
- if (!esdH) {\r
- Printf("ERROR: Could not get ESDInputHandler");\r
- return;\r
- } else {\r
- fESD = esdH->GetEvent();\r
-\r
- // Enable only the needed branches\r
- //esdH->SetActiveBranches("AliESDHeader Vertex Tracks");\r
- }\r
-\r
- if (fUseMCInfo) {\r
- AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());\r
- if (!eventHandler) {\r
- Printf("ERROR: Could not retrieve MC event handler");\r
- return;\r
- } else { \r
- fMC = eventHandler->MCEvent();\r
- }\r
- }\r
-}\r
-\r
//_____________________________________________________________________________\r
Bool_t AlidNdPtTask::AddAnalysisObject(AlidNdPt *pObj) \r
{\r
}\r
\r
//_____________________________________________________________________________\r
-void AlidNdPtTask::CreateOutputObjects()\r
+void AlidNdPtTask::UserCreateOutputObjects()\r
{\r
// Create histograms\r
// Called once\r
\r
- OpenFile(0, "RECREATE");\r
+ OpenFile(1, "RECREATE");\r
\r
//\r
// create output list\r
fOutput->Add(pObj);\r
count++;\r
}\r
- Printf("CreateOutputObjects(): Number of output comparison objects: %d \n", count);\r
+ Printf("UserCreateOutputObjects(): Number of output objects: %d \n", count);\r
}\r
\r
//_____________________________________________________________________________\r
-void AlidNdPtTask::Exec(Option_t *) \r
+void AlidNdPtTask::UserExec(Option_t *) \r
{\r
+ //\r
// Called for each event\r
+ //\r
+\r
+ // ESD event\r
+ fESD = (AliESDEvent*) (InputEvent());\r
if (!fESD) {\r
Printf("ERROR: ESD event not available");\r
return;\r
}\r
\r
+ // MC event\r
+ if(fUseMCInfo) {\r
+ fMC = MCEvent();\r
+ if (!fMC) {\r
+ Printf("ERROR: MC event not available");\r
+ return;\r
+ }\r
+ }\r
+\r
// Process analysis\r
AlidNdPt *pObj = 0;\r
fPitList->Reset();\r
}\r
\r
// Post output data.\r
- PostData(0, fOutput);\r
+ PostData(1, fOutput);\r
}\r
\r
//_____________________________________________________________________________\r
// Called one at the end \r
\r
// check output data\r
- fOutput = dynamic_cast<TList*> (GetOutputData(0));\r
+ fOutput = dynamic_cast<TList*> (GetOutputData(1));\r
if (!fOutput) {\r
Printf("ERROR: AlidNdPtTask::Terminate(): Output data not avaiable GetOutputData(0)==0x0 ..." );\r
return;\r
class TList;
#include "dNdPt/AlidNdPtHelper.h"
-#include "AliAnalysisTask.h"
+#include "AliAnalysisTaskSE.h"
-class AlidNdPtTask : public AliAnalysisTask {
+class AlidNdPtTask : public AliAnalysisTaskSE {
public:
AlidNdPtTask(const char *name = "AlidNdPtTask");
virtual ~AlidNdPtTask();
- virtual void ConnectInputData(Option_t *);
- virtual void CreateOutputObjects();
- virtual void Exec(Option_t *option);
+ virtual void UserCreateOutputObjects();
+ virtual void UserExec(Option_t *option);
virtual void Terminate(Option_t *);
virtual Bool_t Notify();