fPtMax(100.),
fIsPbPb(0),
fCentClass(10),
- fNVariables(23),
+ fNVariables(25),
fVariables(0x0),
fAvgTrials(1),
fNEventAll(0),
fPtDCAZ(0x0),
fPtNClustersTPC(0x0),
fPtNClustersTPCIter1(0x0),
+ fPtNClustersTPCIter1Phi(0x0),
fPtNClustersTPCShared(0x0),
fPtNClustersTPCSharedFrac(0x0),
fPtNPointITS(0x0),
fPtNCrossedRows(0x0),
fPtNCrossedRowsNClusF(0x0),
fPtNCrRNCrRNClusF(0x0),
+ fPtNCrossedRowsFit(0x0),
+ fPtNCrossedRowsNClusFFit(0x0),
fPtChi2Gold(0x0),
fPtChi2GGC(0x0),
fPtChi2GoldPhi(0x0),
fProfPtSigma1Pt2(0x0),
fProfPtSigma1Pt(0x0),
fProfPtPtSigma1Pt(0x0),
- fSystTrackCuts(0x0),
fHistList(0)
{
- SetNVariables(23);
+ SetNVariables(25);
fPtBinEdges[0][0] = 10.;
fPtBinEdges[0][1] = 1.;
fPtMax(100.),
fIsPbPb(0),
fCentClass(10),
- fNVariables(23),
+ fNVariables(25),
fVariables(0x0),
fAvgTrials(1),
fNEventAll(0),
fPtDCAZ(0x0),
fPtNClustersTPC(0x0),
fPtNClustersTPCIter1(0x0),
+ fPtNClustersTPCIter1Phi(0x0),
fPtNClustersTPCShared(0x0),
fPtNClustersTPCSharedFrac(0x0),
fPtNPointITS(0x0),
fPtNCrossedRows(0x0),
fPtNCrossedRowsNClusF(0x0),
fPtNCrRNCrRNClusF(0x0),
+ fPtNCrossedRowsFit(0x0),
+ fPtNCrossedRowsNClusFFit(0x0),
fPtChi2Gold(0x0),
fPtChi2GGC(0x0),
fPtChi2GoldPhi(0x0),
fProfPtSigma1Pt2(0x0),
fProfPtSigma1Pt(0x0),
fProfPtPtSigma1Pt(0x0),
- fSystTrackCuts(0x0),
fHistList(0)
{
//
//
AliDebug(2,Form("AliPWG4HighPtTrackQA Calling Constructor"));
- SetNVariables(23);
+ SetNVariables(25);
fPtBinEdges[0][0] = 10.;
fPtBinEdges[0][1] = 1.;
fh1NTracksSel = new TH1F("fh1NTracksSel","fh1NTracksSel",1,-0.5,0.5);
fHistList->Add(fh1NTracksSel);
- fSystTrackCuts = new TH1F("fSystTrackCuts","fSystTrackCuts",1,-0.5,0.5);
- fSystTrackCuts->Fill("noCut",0);
- fSystTrackCuts->Fill("eta",0);
- fSystTrackCuts->Fill("0.15<pT<1e10",0);
- fSystTrackCuts->Fill("kink",0);
- fSystTrackCuts->Fill("NClusterTPC",0);
- fSystTrackCuts->Fill("Chi2PerNClusTPC",0);
- fSystTrackCuts->Fill("DCA2D",0);
- fHistList->Add(fSystTrackCuts);
-
-
fPtAll = new TH1F("fPtAll","PtAll",fgkNPtBins, binsPt);
fHistList->Add(fPtAll);
fPtSel = new TH1F("fPtSel","PtSel",fgkNPtBins, binsPt);
fPtNClustersTPCIter1 = new TH2F("fPtNClustersTPCIter1","fPtNClustersTPCIter1",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC);
fHistList->Add(fPtNClustersTPCIter1);
+ fPtNClustersTPCIter1Phi = new TH3F("fPtNClustersTPCIter1Phi","fPtNClustersTPCIter1Phi",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC,fgkNPhiBins,binsPhi);
+ fHistList->Add(fPtNClustersTPCIter1Phi);
+
fPtNClustersTPCShared = new TH2F("fPtNClustersTPCShared","fPtNClustersTPCShared",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC);
fHistList->Add(fPtNClustersTPCShared);
fPtNCrRNCrRNClusF = new TH3F("fPtNCrRNCrRNClusF","fPtNCrRNCrRNClusF",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC,fgkNCrossedRowsNClusFBins,binsNCrossedRowsNClusF);
fHistList->Add(fPtNCrRNCrRNClusF);
+ fPtNCrossedRowsFit = new TH2F("fPtNCrossedRowsFit","fPtNCrossedRowsFit",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC);
+ fHistList->Add(fPtNCrossedRowsFit);
+
+ fPtNCrossedRowsNClusFFit = new TH2F("fPtNCrossedRowsNClusFFit","fPtNCrossedRowsNClusFFit",fgkNPtBins,binsPt,fgkNCrossedRowsNClusFBins,binsNCrossedRowsNClusF);
+ fHistList->Add(fPtNCrossedRowsNClusFFit);
+
fPtChi2Gold = new TH2F("fPtChi2Gold","fPtChi2Gold",fgkNPtBins,binsPt,fgkNChi2CBins,binsChi2C);
fHistList->Add(fPtChi2Gold);
//Check if vertex is reconstructed
if(fDataType==kESD&&dynamic_cast<AliESDEvent*>(fEvent)) {
- fVtx = ((AliESDEvent*)fEvent)->GetPrimaryVertexSPD();
+ fVtx = ((AliESDEvent*)fEvent)->GetPrimaryVertexTracks();
+
+ if (!fVtx || !fVtx->GetStatus())
+ fVtx = ((AliESDEvent*)fEvent)->GetPrimaryVertexSPD();
if(!fVtx) {
fNEventReject->Fill("noVTX",1);
continue;
if(fTrackType==4) {
- FillSystematicCutHist(esdtrack);
if (!(fTrackCuts->AcceptTrack(esdtrack))) {
fh1NTracksReject->Fill("trackCuts",1);
if(origtrack) delete origtrack;
}
}
- if(fTrackType!=4)
- FillSystematicCutHist(track);
-
fPtAll->Fill(track->Pt());
if (!(fTrackCuts->AcceptTrack(track)) && fTrackType!=4 && fTrackType!=5 && fTrackType!=6) {
if(fVariables->At(5)>0.) fVariables->SetAt(track->GetTPCchi2()/fVariables->At(5),10);
- fVariables->SetAt(track->GetTPCClusterInfo(2,1),11); //#crossed rows
+ // fVariables->SetAt(track->GetTPCClusterInfo(2,1),11); //#crossed rows
+ fVariables->SetAt(track->GetTPCCrossedRows(),11); //#crossed rows
Float_t crossedRowsTPCNClsF = 1.;//track->GetTPCClusterInfo(2,0);
if(track->GetTPCNclsF()>0.) crossedRowsTPCNClsF = fVariables->At(11)/track->GetTPCNclsF();
fVariables->SetAt(crossedRowsTPCNClsF,12);//(#crossed rows)/(#findable clusters)
fVariables->SetAt(track->GetTPCnclsS(),20);
- Float_t chi2Gold = GetGoldenChi2(origtrack);
+ Float_t chi2Gold = origtrack->GetChi2TPCConstrainedVsGlobal(fVtx);//GetGoldenChi2(origtrack);
Float_t chi2GGC = GetGGCChi2(origtrack);
fVariables->SetAt(chi2Gold,21);
fVariables->SetAt(chi2GGC,22);
+
+ fVariables->SetAt(GetTPCClusterInfoFitMap(track,2,1),23);
+ Float_t crossedRowsTPCNClsFFit = 1.;
+ if(track->GetTPCNclsF()>0.) crossedRowsTPCNClsFFit = fVariables->At(23)/track->GetTPCNclsF();
+ fVariables->SetAt(crossedRowsTPCNClsFFit,24);
FillHistograms();
fVariables->SetAt(0.,8);
fVariables->SetAt(GetTrackLengthTPC(aodtrack),9);
fVariables->SetAt(aodtrack->Chi2perNDF(),10);
- fVariables->SetAt(GetTPCClusterInfo(aodtrack,2),11);
+ fVariables->SetAt(GetTPCClusterInfo(aodtrack,2,1),11);
Float_t crossedRowsTPCNClsF = 0.;
if(aodtrack->GetTPCNclsF()>0.) crossedRowsTPCNClsF = fVariables->At(11)/aodtrack->GetTPCNclsF();
fVariables->SetAt(crossedRowsTPCNClsF,12);
fVariables->SetAt(0.,21); //not available in AOD
fVariables->SetAt(0.,22); //not available in AOD
+ fVariables->SetAt(0.,23); //not available in AOD
+ fVariables->SetAt(0.,24); //not available in AOD
+
fPtAll->Fill(fVariables->At(0));
FillHistograms();
fPtNClustersTPCIter1->Fill(fVariables->At(0),fVariables->At(18));
+ fPtNClustersTPCIter1Phi->Fill(fVariables->At(0),fVariables->At(18),fVariables->At(1));
fPtNClustersTPCShared->Fill(fVariables->At(0),fVariables->At(20));
if(fVariables->At(5)>0.)
fPtNClustersTPCSharedFrac->Fill(fVariables->At(0),fVariables->At(20)/fVariables->At(5));
fChi2GoldChi2GGC->Fill(fVariables->At(21),fVariables->At(22));
+ fPtNCrossedRowsFit->Fill(fVariables->At(0),fVariables->At(23));
+ fPtNCrossedRowsNClusFFit->Fill(fVariables->At(0),fVariables->At(24));
+
}
return 0; // undefined type - default value
}
+//_______________________________________________________________________
+Float_t AliPWG4HighPtTrackQA::GetTPCClusterInfoFitMap(AliESDtrack *tr,Int_t nNeighbours/*=3*/, Int_t type/*=0*/, Int_t row0, Int_t row1) const
+{
+ //
+ // TPC cluster information from fit map
+ // type 0: get fraction of found/findable clusters with neighbourhood definition
+ // 1: findable clusters with neighbourhood definition
+ // 2: found clusters
+ //
+ // definition of findable clusters:
+ // a cluster is defined as findable if there is another cluster
+ // within +- nNeighbours pad rows. The idea is to overcome threshold
+ // effects with a very simple algorithm.
+ //
+
+ TBits fTPCFitMap = tr->GetTPCFitMap();
+ if (type==2) return fTPCFitMap.CountBits();
+
+ Int_t found=0;
+ Int_t findable=0;
+ Int_t last=-nNeighbours;
+
+ for (Int_t i=row0; i<row1; ++i){
+ //look to current row
+ if (fTPCFitMap[i]) {
+ last=i;
+ ++found;
+ ++findable;
+ continue;
+ }
+ //look to nNeighbours before
+ if ((i-last)<=nNeighbours) {
+ ++findable;
+ continue;
+ }
+ //look to nNeighbours after
+ for (Int_t j=i+1; j<i+1+nNeighbours; ++j){
+ if (fTPCFitMap[j]){
+ ++findable;
+ break;
+ }
+ }
+ }
+ if (type==1) return findable;
+
+ if (type==0){
+ Float_t fraction=0;
+ if (findable>0)
+ fraction=(Float_t)found/(Float_t)findable;
+ else
+ fraction=0;
+ return fraction;
+ }
+ return 0; // undefined type - default value
+}
+
//_______________________________________________________________________
Int_t AliPWG4HighPtTrackQA::GetTrackLengthTPC(AliESDtrack *track) {
//
}
-//_______________________________________________________________________
-void AliPWG4HighPtTrackQA::FillSystematicCutHist(AliESDtrack *track) {
-
- fSystTrackCuts->Fill("noCut",1);
- if(TMath::Abs(track->Eta())>0.9)
- fSystTrackCuts->Fill("eta",1);
- if(track->Pt()<0.15 || track->Pt()>1e10)
- fSystTrackCuts->Fill("0.15<pT<1e10",1);
- if(track->GetKinkIndex(0)>0)
- fSystTrackCuts->Fill("kink",1);
- if(track->GetTPCclusters(0)<70)
- fSystTrackCuts->Fill("NClusterTPC",1);
- if(track->GetTPCclusters(0)>0.) {
- if(track->GetTPCchi2()/Float_t(track->GetTPCclusters(0))>4.)
- fSystTrackCuts->Fill("Chi2PerNClusTPC",1);
- }
-
- Float_t dcaToVertexXY = 0.;
- Float_t dcaToVertexZ = 0.;
- track->GetImpactParameters(dcaToVertexXY,dcaToVertexZ);
- Float_t fCutMaxDCAToVertexXY = 2.4;
- Float_t fCutMaxDCAToVertexZ = 3.2;
- Float_t dcaToVertex = TMath::Sqrt(dcaToVertexXY*dcaToVertexXY/fCutMaxDCAToVertexXY/fCutMaxDCAToVertexXY + dcaToVertexZ*dcaToVertexZ/fCutMaxDCAToVertexZ/fCutMaxDCAToVertexZ);
- if(dcaToVertex>1.)
- fSystTrackCuts->Fill("DCA2D",1);
-
-}
-
//________________________________________________________________________
void AliPWG4HighPtTrackQA::Terminate(Option_t *)
{
void DoAnalysisAOD();
void FillHistograms();
- void FillSystematicCutHist(AliESDtrack *track);
-
//Setters
void SetDataType(DataType d) {fDataType = d;}
void SetIsPbPb(Bool_t cs) {fIsPbPb = cs;}
Float_t GetPtMax() {return fPtMax;}
Float_t GetTPCClusterInfo(AliAODTrack *tr,Int_t nNeighbours=3, Int_t type=0, Int_t row0=0, Int_t row1=159) const;
+ Float_t GetTPCClusterInfoFitMap(AliESDtrack *tr,Int_t nNeighbours=3, Int_t type=0, Int_t row0=0, Int_t row1=159) const;
Int_t GetTrackLengthTPC(AliESDtrack *track);
Int_t GetTrackLengthTPC(AliAODTrack *track);
Float_t GetGoldenChi2(AliESDtrack *origtrack);
Int_t fCentClass; // Select only events from predefined centrality class
/*
+ QA variables stored in TArrayF *fVariables
0: pt
1: phi
2: eta
10: chi2PerClusterTPC
11: #crossed rows
12: (#crossed rows)/(#findable clusters)
+ 13: SigmaY2
+ 14: SigmaZ2
+ 15: SigmaSnp2
+ 16: SigmaTgl2
+ 17: Sigma1Pt2
+ 18: NClustersTPCIter1
+ 19: TPCChi2Iter1
+ 20: NClustersTPCShared
+ 21: Chi2Gold (TPC constrained vs global)
+ 22: Chi2GGC (global constrained vs global)
+ 23: NCrossed rows from fit map
+ 24: (#crossed rows)/(#findable clusters) from fit map
*/
+
Int_t fNVariables; // Number of variables
TArrayF *fVariables; // QA variables
TH2F *fPtDCAZ; //! Pt vs DCAZ
TH2F *fPtNClustersTPC; //! Pt vs nClustersTPC
TH2F *fPtNClustersTPCIter1; //! Pt vs nClustersTPCIter1
+ TH3F *fPtNClustersTPCIter1Phi; //! Pt vs nClustersTPCIter1 vs Phi
TH2F *fPtNClustersTPCShared; //! Pt vs nClustersTPCShared
TH2F *fPtNClustersTPCSharedFrac; //! Pt vs nClustersTPCSharedFrac
TH2F *fPtNPointITS; //! Pt vs nPointITS
TH2F *fPtNCrossedRows; //! Pt vs NCrossedRows
TH2F *fPtNCrossedRowsNClusF; //! Pt vs NCrossedRows/NClusF
TH3F *fPtNCrRNCrRNClusF; //! Pt vs NCrossedRows vs NCrossedRows/NClusF
+ TH2F *fPtNCrossedRowsFit; //! Pt vs NCrossedRows from NClusterFitMap
+ TH2F *fPtNCrossedRowsNClusFFit; //! Pt vs NCrossedRows/NClusF from NClusterFitMap
TH2F *fPtChi2Gold; //! Pt vs Chi2 between global and TPC constrained track
TH2F *fPtChi2GGC; //! Pt vs Chi2 between global and global constrained track
TProfile *fProfPtSigma1Pt; //! pT vs sigma(1/Pt)
TProfile *fProfPtPtSigma1Pt; //! pT vs pT*sigma(1/Pt)
- TH1F *fSystTrackCuts; //! Bookkeeping for track cuts
-
TList *fHistList; //! List of Histograms
esdfilter->SetGlobalConstrainedFilterMask(1<<8|1<<9); // these tracks are written out as global constrained tracks
esdfilter->SetHybridFilterMaskGlobalConstrainedGlobal((1<<4)); // these normal global tracks will be marked as hybrid
- esdfilter->SetTPCConstrainedFilterMask(1<<11); // these tracks are written out as global constrained tracks
+ // esdfilter->SetTPCConstrainedFilterMask(1<<11); // these tracks are written out as tpc constrained tracks
// Filter with cuts on V0s
AliESDv0Cuts* esdV0Cuts = new AliESDv0Cuts("Standard V0 Cuts pp", "ESD V0 Cuts");
{
/*
- trackType: 0 = global
+ trackType: 0 = global
1 = TPC stand alone
2 = TPC stand alone constrained to SPD vertex
cuts: 0 (global) = standard ITSTPC2010 a la RAA analysis
}
+void AddTaskPWG4HighPtTrackQAAll2011(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0)
+{
+
+ Int_t cent = 10;
+ UInt_t iPhysicsSelectionFlag = AliVEvent::kMB;
+ UInt_t iPhysicsSelectionFlagCentral = AliVEvent::kCentral;
+ UInt_t iPhysicsSelectionFlagSemiCentral = AliVEvent::kSemiCentral;
+
+
+ AliPWG4HighPtTrackQA *taskTrackQA00cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlag);
+ AliPWG4HighPtTrackQA *taskTrackQA01cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlag);
+ AliPWG4HighPtTrackQA *taskTrackQA70cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlag);
+ AliPWG4HighPtTrackQA *taskTrackQA71cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlag);
+ AliPWG4HighPtTrackQA *taskTrackQA72cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlag);
+
+ if(isPbPb) {
+ for(cent=0; cent<4; cent++) {
+ AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlag);
+ AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlag);
+ AliPWG4HighPtTrackQA *taskTrackQA70 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlag);
+ AliPWG4HighPtTrackQA *taskTrackQA71 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlag);
+ AliPWG4HighPtTrackQA *taskTrackQA72 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlag);
+
+ if(cent==0) {
+ AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA70 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA71 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA72 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagCentral);
+ }
+ else {
+ AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagSemiCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagSemiCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA70 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagSemiCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA71 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagSemiCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA72 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagSemiCentral);
+ }
+
+ }
+ }
+
+}
+
void AddTaskPWG4HighPtTrackQAAllReduced(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0)
{
}
-void AddTaskPWG4HighPtTrackQAAOD(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 1, Int_t filterBit)
+void AddTaskPWG4HighPtTrackQAAllReduced2011(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0)
+{
+
+ int cent = 10;
+
+ UInt_t iPhysicsSelectionFlagCentral = AliVEvent::kCentral;
+ UInt_t iPhysicsSelectionFlagSemiCentral = AliVEvent::kSemiCentral;
+
+ AliPWG4HighPtTrackQA *taskTrackQA00C = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA01C = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA21C = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1,iPhysicsSelectionFlagCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA70C = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA71C = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA72C = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagCentral);
+
+ AliPWG4HighPtTrackQA *taskTrackQA00SC = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagSemiCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA01SC = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagSemiCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA21SC = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1,iPhysicsSelectionFlagSemiCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA70SC = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagSemiCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA71SC = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagSemiCentral);
+ AliPWG4HighPtTrackQA *taskTrackQA72SC = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagSemiCentral);
+
+}
+
+
+void AddTaskPWG4HighPtTrackQAAOD(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 1, Int_t filterBit = 272)
{
AliPWG4HighPtTrackQA *taskTrackQA = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,0,0,0);
taskTrackQA->SetFilterMask(filterBit);
}
-AliPWG4HighPtTrackQA* AddTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14",Bool_t isPbPb=kTRUE,Int_t iAODanalysis = 0, Int_t centClass = 0, Int_t trackType = 0, Int_t cuts = 0)
+AliPWG4HighPtTrackQA* AddTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14",Bool_t isPbPb=kTRUE,Int_t iAODanalysis = 0, Int_t centClass = 0, Int_t trackType = 0, Int_t cuts = 0, UInt_t iPhysicsSelectionFlag = AliVEvent::kMB)
{
/*
trackType: 0 = global
//Create the task
- AliPWG4HighPtTrackQA *taskPWG4TrackQA = new AliPWG4HighPtTrackQA(Form("AliPWG4HighPtTrackQACent%dTrack%dCuts%d",centClass,trackType,cuts));
+ AliPWG4HighPtTrackQA *taskPWG4TrackQA = new AliPWG4HighPtTrackQA(Form("AliPWG4HighPtTrackQACent%dTrack%dCuts%dPSF%d",centClass,trackType,cuts,iPhysicsSelectionFlag));
taskPWG4TrackQA->SetTrackType(trackType);
taskPWG4TrackQA->SetCuts(trackCuts);
taskPWG4TrackQA->SetCutsITSLoose(trackCutsReject);
}
// taskPWG4TrackQA->SetSigmaConstrainedMax(5.);
- taskPWG4TrackQA->SelectCollisionCandidates();
+ taskPWG4TrackQA->SelectCollisionCandidates(iPhysicsSelectionFlag);
// E. Create ONLY the output containers for the data produced by the task.
// Get and connect other common input/output containers via the manager as below
//==============================================================================
-
TString outputfile = AliAnalysisManager::GetCommonFileName();
- outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%d",centClass,trackType,cuts);
-
- AliAnalysisDataContainer *cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%d",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
+ if(iPhysicsSelectionFlag == AliVEvent::kMB)
+ outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%d",centClass,trackType,cuts);
+ else if(iPhysicsSelectionFlag == AliVEvent::kCentral)
+ outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%dkCentral",centClass,trackType,cuts);
+ else if(iPhysicsSelectionFlag == AliVEvent::kSemiCentral)
+ outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%dkSemiCentral",centClass,trackType,cuts);
+
+ AliAnalysisDataContainer *cout_histQAtrack = 0x0;
+ if(iPhysicsSelectionFlag == AliVEvent::kMB)
+ cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%d",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
+ else if(iPhysicsSelectionFlag == AliVEvent::kCentral)
+ cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%dkCentral",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
+ else if(iPhysicsSelectionFlag == AliVEvent::kSemiCentral)
+ cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%dkSemiCentral",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
mgr->AddTask(taskPWG4TrackQA);
mgr->ConnectInput(taskPWG4TrackQA,0,mgr->GetCommonInputContainer());