#include "AliTracker.h"\r
#include "AliGeomManager.h"\r
\r
+#include "AliESDVZERO.h"\r
+#include "AliMultiplicity.h"\r
+\r
#include "AliESDtrackCuts.h"\r
#include "AliMCEventHandler.h"\r
#include "dNdPt/AlidNdPt.h"\r
, fPitList(0)\r
, fCompList(0)\r
, fUseMCInfo(kFALSE)\r
+ , fUseCentrality(0) // default = off\r
+ , fUseCentralityBin(0)\r
{\r
// Constructor\r
\r
count++;\r
}\r
Printf("UserCreateOutputObjects(): Number of output objects: %d \n", count);\r
+\r
+ if(fUseCentrality) {\r
+ Printf("Use Centrality - Bin %d", fUseCentralityBin);\r
+ }\r
}\r
\r
//_____________________________________________________________________________\r
}\r
\r
// Process analysis\r
- AlidNdPt *pObj = 0;\r
- fPitList->Reset();\r
- while((pObj = (AlidNdPt *)fPitList->Next()) != NULL) {\r
- pObj->Process(fESD,fMC);\r
+ \r
+ Bool_t process = kTRUE;\r
+\r
+ // Check fo centrality\r
+ if (fUseCentrality) {\r
+ if ( CalculateCentralityBin() != fUseCentralityBin ) {\r
+ process = kFALSE;\r
+ }\r
}\r
\r
+ if (process) {\r
+ AlidNdPt *pObj = 0;\r
+ fPitList->Reset();\r
+ while((pObj = (AlidNdPt *)fPitList->Next()) != NULL) {\r
+ pObj->Process(fESD,fMC);\r
+ }\r
+ }\r
+\r
+\r
// Post output data.\r
PostData(1, fOutput);\r
}\r
return;\r
}\r
}\r
+\r
+//________________________________________________________________________\r
+Int_t AlidNdPtTask::CalculateCentralityBin(){\r
+ // Get Centrality bin\r
+\r
+ Int_t centrality = -1;\r
+\r
+ if (fUseCentrality == 0)\r
+ return centrality;\r
+\r
+ AliESDVZERO* esdV0 = fESD->GetVZEROData();\r
+ Float_t multV0 = esdV0->GetMTotV0A() + esdV0->GetMTotV0C();\r
+ \r
+ Float_t nClusters[6];\r
+\r
+ const AliMultiplicity *mult = fESD->GetMultiplicity();\r
+ for(Int_t ilay = 0; ilay < 6; ilay++){\r
+ nClusters[ilay] = mult->GetNumberOfITSClusters(ilay);\r
+ }\r
+ \r
+ if ( fUseCentrality == 1 ) {\r
+ // -- centrality cuts V0\r
+ if ( multV0 >= 0. && multV0 <= 106.75 ) centrality = 90;\r
+ else if ( multV0 > 106.75 && multV0 <= 277.55 ) centrality = 80;\r
+ else if ( multV0 > 277.55 && multV0 <= 661.85 ) centrality = 70;\r
+ else if ( multV0 > 661.85 && multV0 <= 1345.05 ) centrality = 60;\r
+ else if ( multV0 > 1345.05 && multV0 <= 2412.55 ) centrality = 50;\r
+ else if ( multV0 > 2412.55 && multV0 <= 3907.05 ) centrality = 40;\r
+ else if ( multV0 > 3907.05 && multV0 <= 6042.05 ) centrality = 30;\r
+ else if ( multV0 > 6042.05 && multV0 <= 8902.95 ) centrality = 20;\r
+ else if ( multV0 > 8902.95 && multV0 <= 12788.6 ) centrality = 10;\r
+ else if ( multV0 > 12788.6 && multV0 <= 15222.5 ) centrality = 5;\r
+ else if ( multV0 > 15222.5 && multV0 <= 19449.8 ) centrality = 0;\r
+ }\r
+ else if ( fUseCentrality == 2 ) {\r
+ if ( nClusters[1] >= 0. && nClusters[1] <= 7.18 ) centrality = 100;\r
+ else if ( nClusters[1] > 7.18 && nClusters[1] <= 35.9 ) centrality = 90;\r
+ else if ( nClusters[1] > 35.9 && nClusters[1] <= 93.34 ) centrality = 80;\r
+ else if ( nClusters[1] > 93.34 && nClusters[1] <= 222.58 ) centrality = 70;\r
+ else if ( nClusters[1] > 222.58 && nClusters[1] <= 437.98 ) centrality = 60;\r
+ else if ( nClusters[1] > 437.98 && nClusters[1] <= 768.26 ) centrality = 50;\r
+ else if ( nClusters[1] > 768.26 && nClusters[1] <= 1242.14 ) centrality = 40;\r
+ else if ( nClusters[1] > 1242.14 && nClusters[1] <= 1888.34 ) centrality = 30;\r
+ else if ( nClusters[1] > 1888.34 && nClusters[1] <= 2735.58 ) centrality = 20;\r
+ else if ( nClusters[1] > 2735.58 && nClusters[1] <= 3884.38 ) centrality = 10;\r
+ else if ( nClusters[1] > 3884.38 && nClusters[1] <= 4573.66 ) centrality = 5;\r
+ else if ( nClusters[1] > 4573.66 && nClusters[1] <= 6540.98 ) centrality = 0;\r
+ }\r
+ \r
+ return centrality;\r
+}\r
Bool_t AddAnalysisObject(AlidNdPt *pObj);
void SetUseMCInfo(Bool_t info) { fUseMCInfo = info; }
+ // Use centrality - if yes, which one
+ void SetUseCentrality(Int_t cent) { fUseCentrality = cent; }
+ Int_t GetUseCentrality() { return fUseCentrality; }
+
+ // Centrality bin to be used
+ void SetUseCentralityBin(Int_t bin) { fUseCentralityBin = bin; }
+ Int_t GetUseCentralityBin() { return fUseCentralityBin; }
+
private:
+ // Calculate centrality
+ Int_t CalculateCentralityBin();
+
AliESDEvent *fESD; //! ESD event
AliMCEvent *fMC; //! MC event
TList* fOutput; //! list send on output slot 0
TIterator *fPitList; //! iterator over the output objetcs
TList *fCompList; // list of comparison objects
- Bool_t fUseMCInfo; // use MC information
+ Bool_t fUseMCInfo; // use MC information
+
+ Int_t fUseCentrality; // use centrality (0=off(default),1=VZERO,2=SPD)
+ Int_t fUseCentralityBin; // centrality bin to be used
AlidNdPtTask(const AlidNdPtTask&); // not implemented
AlidNdPtTask& operator=(const AlidNdPtTask&); // not implemented
- ClassDef(AlidNdPtTask, 1); // example of analysis
+ ClassDef(AlidNdPtTask, 2); // example of analysis
};
#endif