fNumberOfESDTracks(0),
fMCEvent(NULL),
fMCStack(NULL),
- fStreamQA(NULL),
+ fTreeQA(NULL),
fIsHeavyIon(kFALSE),
ffillTree(kFALSE),
ffillHistograms(kFALSE),
fOutputList(NULL),
+ fTreeList(NULL),
fESDList(NULL),
hVertexZ(NULL),
hNGoodESDTracks(NULL),
hGammaEta(NULL),
hGammaChi2perNDF(NULL),
hGammaPsiPair(NULL),
- hGammaQt(NULL),
+ hGammaArmenteros(NULL),
hGammaCosinePointingAngle(NULL),
- hGammaXY(NULL),
- hGammaZR(NULL),
+ hGammaInvMass(NULL),
hElecPt(NULL),
hElecEta(NULL),
hElecPhi(NULL),
hElecNfindableClsTPC(NULL),
hPosiNfindableClsTPC(NULL),
- fTrueList(NULL),
- hTrueResolutionR(NULL),
- hTrueResolutionZ(NULL),
- hTrueResolutionPhi(NULL),
- hTrueGammaPt(NULL),
- hTrueGammaPhi(NULL),
- hTrueGammaEta(NULL),
- hTrueGammaMass(NULL),
- hTrueGammaChi2perNDF(NULL),
- hTrueGammaPsiPair(NULL),
- hTrueGammaQt(NULL),
- hTrueGammaCosinePointingAngle(NULL),
- hTrueGammaXY(NULL),
- hTrueGammaZR(NULL),
- hTrueElecPt(NULL),
- hTrueElecEta(NULL),
- hTrueElecPhi(NULL),
- hTrueElecNfindableClsTPC(NULL),
- hTruePosiNfindableClsTPC(NULL),
+ hElecClsTPC(NULL),
+ hPosiClsTPC(NULL),
+ hElectrondEdxP(NULL),
+ hElectronITSdEdxP(NULL),
+ hElectronTOFP(NULL),
+ hElectronNSigmadEdxP(NULL),
+ hElectronNSigmaPiondEdxP(NULL),
+ hElectronNSigmaITSP(NULL),
+ hElectronNSigmaTOFP(NULL),
+ hPositrondEdxP(NULL),
+ hPositronITSdEdxP(NULL),
+ hPositronTOFP(NULL),
+ hPositronNSigmadEdxP(NULL),
+ hPositronNSigmaPiondEdxP(NULL),
+ hPositronNSigmaITSP(NULL),
+ hPositronNSigmaTOFP(NULL),
+// hElecAsymP(NULL),
+// fTrueList(NULL),
+// hTrueResolutionR(NULL),
+// hTrueResolutionZ(NULL),
+// hTrueResolutionPhi(NULL),
+// hTrueGammaPt(NULL),
+// hTrueGammaPhi(NULL),
+// hTrueGammaEta(NULL),
+// hTrueGammaMass(NULL),
+// hTrueGammaChi2perNDF(NULL),
+// hTrueGammaPsiPair(NULL),
+// hTrueGammaQt(NULL),
+// hTrueGammaCosinePointingAngle(NULL),
+// hTrueGammaXY(NULL),
+// hTrueGammaZR(NULL),
+// hTrueElecPt(NULL),
+// hTrueElecEta(NULL),
+// hTrueElecPhi(NULL),
+// hTrueElecNfindableClsTPC(NULL),
+// hTruePosiNfindableClsTPC(NULL),
+// hTrueElecAsymP(NULL),
+ fGammaPt(0),
+ fGammaTheta(0),
+ fGammaChi2NDF(0),
+ fGammaPhotonProp(5),
+ fGammaConvCoord(5),
+ fDaughterProp(24),
+ fKind(0),
fIsMC(kFALSE),
fnGammaCandidates(1),
fMCStackPos(NULL),
{
}
+
AliAnalysisTaskConversionQA::AliAnalysisTaskConversionQA(const char *name) : AliAnalysisTaskSE(name),
fV0Reader(NULL),
fConversionGammas(NULL),
fNumberOfESDTracks(0),
fMCEvent(NULL),
fMCStack(NULL),
- fStreamQA(NULL),
+ fTreeQA(NULL),
fIsHeavyIon(kFALSE),
ffillTree(kFALSE),
ffillHistograms(kFALSE),
fOutputList(NULL),
+ fTreeList(NULL),
fESDList(NULL),
hVertexZ(NULL),
hNGoodESDTracks(NULL),
hGammaEta(NULL),
hGammaChi2perNDF(NULL),
hGammaPsiPair(NULL),
- hGammaQt(NULL),
+ hGammaArmenteros(NULL),
hGammaCosinePointingAngle(NULL),
- hGammaXY(NULL),
- hGammaZR(NULL),
+ hGammaInvMass(NULL),
hElecPt(NULL),
hElecEta(NULL),
hElecPhi(NULL),
hElecNfindableClsTPC(NULL),
hPosiNfindableClsTPC(NULL),
- fTrueList(NULL),
- hTrueResolutionR(NULL),
- hTrueResolutionZ(NULL),
- hTrueResolutionPhi(NULL),
- hTrueGammaPt(NULL),
- hTrueGammaPhi(NULL),
- hTrueGammaEta(NULL),
- hTrueGammaMass(NULL),
- hTrueGammaChi2perNDF(NULL),
- hTrueGammaPsiPair(NULL),
- hTrueGammaQt(NULL),
- hTrueGammaCosinePointingAngle(NULL),
- hTrueGammaXY(NULL),
- hTrueGammaZR(NULL),
- hTrueElecPt(NULL),
- hTrueElecEta(NULL),
- hTrueElecPhi(NULL),
- hTrueElecNfindableClsTPC(NULL),
- hTruePosiNfindableClsTPC(NULL),
+ hElecClsTPC(NULL),
+ hPosiClsTPC(NULL),
+ hElectrondEdxP(NULL),
+ hElectronITSdEdxP(NULL),
+ hElectronTOFP(NULL),
+ hElectronNSigmadEdxP(NULL),
+ hElectronNSigmaPiondEdxP(NULL),
+ hElectronNSigmaITSP(NULL),
+ hElectronNSigmaTOFP(NULL),
+ hPositrondEdxP(NULL),
+ hPositronITSdEdxP(NULL),
+ hPositronTOFP(NULL),
+ hPositronNSigmadEdxP(NULL),
+ hPositronNSigmaPiondEdxP(NULL),
+ hPositronNSigmaITSP(NULL),
+ hPositronNSigmaTOFP(NULL),
+// hGammaXY(NULL),
+// hGammaZR(NULL),
+// hElecAsymP(NULL),
+// fTrueList(NULL),
+// hTrueResolutionR(NULL),
+// hTrueResolutionZ(NULL),
+// hTrueResolutionPhi(NULL),
+// hTrueGammaPt(NULL),
+// hTrueGammaPhi(NULL),
+// hTrueGammaEta(NULL),
+// hTrueGammaMass(NULL),
+// hTrueGammaChi2perNDF(NULL),
+// hTrueGammaPsiPair(NULL),
+// hTrueGammaQt(NULL),
+// hTrueGammaCosinePointingAngle(NULL),
+// hTrueGammaXY(NULL),
+// hTrueGammaZR(NULL),
+// hTrueElecPt(NULL),
+// hTrueElecEta(NULL),
+// hTrueElecPhi(NULL),
+// hTrueElecNfindableClsTPC(NULL),
+// hTruePosiNfindableClsTPC(NULL),
+// hTrueElecAsymP(NULL),
+ fGammaPt(0),
+ fGammaTheta(0),
+ fGammaChi2NDF(0),
+ fGammaPhotonProp(5),
+ fGammaConvCoord(5),
+ fDaughterProp(24),
+ fKind(0),
fIsMC(kFALSE),
fnGammaCandidates(1),
fMCStackPos(NULL),
AliAnalysisTaskConversionQA::~AliAnalysisTaskConversionQA()
{
// default deconstructor
- if(fStreamQA){
- delete fStreamQA;
- fStreamQA = 0x0;
- }
+
}
//________________________________________________________________________
void AliAnalysisTaskConversionQA::UserCreateOutputObjects()
fESDList->Add(hGammaChi2perNDF);
hGammaPsiPair = new TH1F("Gamma_PsiPair","Gamma_PsiPair",500,0,2);
fESDList->Add(hGammaPsiPair);
- hGammaQt = new TH1F("Gamma_Qt","Gamma_Qt",400,0,0.1);
- fESDList->Add(hGammaQt);
+ hGammaArmenteros = new TH2F("Gamma_Armenteros","Gamma_Armenteros",200,-1,1,400,0,0.1);
+ fESDList->Add(hGammaArmenteros);
hGammaCosinePointingAngle = new TH1F("Gamma_CosinePointingAngle","Gamma_CosinePointingAngle",900,0.7,1.);
fESDList->Add(hGammaCosinePointingAngle);
- hGammaXY = new TH2F("Gamma_ConversionPoint_XY","Gamma_ConversionPoint_XY",960,-120,120,960,-120,120);
- fESDList->Add(hGammaXY);
- hGammaZR= new TH2F("Gamma_ConversionPoint_ZR","Gamma_ConversionPoint_ZR",1200,-150,150,480,0,120);
- fESDList->Add(hGammaZR);
-
+ hGammaInvMass = new TH1F( "Gamma_InvMass","",200, 0, 0.2);
+ fESDList->Add(hGammaInvMass);
hElecPt = new TH2F("Electron_Positron_Pt","Electron_Positron_Pt",250,0,25,250,0,25);
fESDList->Add(hElecPt);
hElecEta = new TH2F("Electron_Positron_Eta","Electron_Positron_Eta",600,-1.5,1.5,600,-1.5,1.5);
fESDList->Add(hElecEta);
hElecPhi = new TH2F("Electron_Positron_Phi","Electron_Positron_Phi",360,0,2*TMath::Pi(),360,0,2*TMath::Pi());
fESDList->Add(hElecPhi);
+ hElecClsTPC = new TH1F("Electron_ClusterTPC","Electron_ClusterTPC",200,0,200);
+ fESDList->Add(hElecClsTPC);
+ hPosiClsTPC = new TH1F("Positron_ClusterTPC","Positron_ClusterTPC",200,0,200);
+ fESDList->Add(hPosiClsTPC);
+
hElecNfindableClsTPC = new TH1F("Electron_findableClusterTPC","Electron_findableClusterTPC",100,0,1);
fESDList->Add(hElecNfindableClsTPC);
hPosiNfindableClsTPC = new TH1F("Positron_findableClusterTPC","Positron_findableClusterTPC",100,0,1);
fESDList->Add(hPosiNfindableClsTPC);
+
+ hElectrondEdxP = new TH2F("Electron_dEdx_P","Electron_dEdx_P",100, 0.05, 20, 200, 0, 200);
+ SetLogBinningXTH2(hElectrondEdxP);
+ fESDList->Add(hElectrondEdxP);
+ hPositrondEdxP = new TH2F("Positron_dEdx_P","Positron_dEdx_P",100, 0.05, 20, 200, 0, 200);
+ SetLogBinningXTH2(hPositrondEdxP);
+ fESDList->Add(hPositrondEdxP);
+ hElectronNSigmadEdxP = new TH2F("Electron_NSigmadEdx_P","Electron_NSigmadEdx_P",100, 0.05, 20, 200, -10, 10);
+ SetLogBinningXTH2(hElectronNSigmadEdxP);
+ fESDList->Add(hElectronNSigmadEdxP);
+ hPositronNSigmadEdxP = new TH2F("Positron_NSigmadEdx_P","Positron_NSigmadEdx_P",100, 0.05, 20, 200, -10, 10);
+ SetLogBinningXTH2(hPositronNSigmadEdxP);
+ fESDList->Add(hPositronNSigmadEdxP);
+ hElectronNSigmaPiondEdxP = new TH2F("Electron_NSigmaPiondEdx_P","Electron_NSigmaPiondEdx_P",100, 0.05, 20, 200, -10, 10);
+ SetLogBinningXTH2(hElectronNSigmaPiondEdxP);
+ fESDList->Add(hElectronNSigmaPiondEdxP);
+ hPositronNSigmaPiondEdxP = new TH2F("Positron_NSigmaPiondEdx_P","Positron_NSigmaPiondEdx_P",100, 0.05, 20, 200, -10, 10);
+ SetLogBinningXTH2(hPositronNSigmaPiondEdxP);
+ fESDList->Add(hPositronNSigmaPiondEdxP);
+
+ hElectronTOFP = new TH2F("Electron_TOF_P","Electron_TOF_P",100, 0.05, 20, 600, -1000, 29000);
+ SetLogBinningXTH2(hElectronTOFP);
+ fESDList->Add(hElectronTOFP);
+ hPositronTOFP = new TH2F("Positron_TOF_P","Positron_TOF_P",100, 0.05, 20, 600, -1000, 29000);
+ SetLogBinningXTH2(hPositronTOFP);
+ fESDList->Add(hPositronTOFP);
+ hElectronNSigmaTOFP = new TH2F("Electron_NSigmaTOF_P","Electron_NSigmaTOF_P",100, 0.05, 20, 200, -10, 10);
+ SetLogBinningXTH2(hElectronNSigmaTOFP);
+ fESDList->Add(hElectronNSigmaTOFP);
+ hPositronNSigmaTOFP = new TH2F("Positron_NSigmaTOF_P","Positron_NSigmaTOF_P",100, 0.05, 20, 200, -10, 10);
+ SetLogBinningXTH2(hPositronNSigmaTOFP);
+ fESDList->Add(hPositronNSigmaTOFP);
+
+ hElectronITSdEdxP = new TH2F("Electron_ITSdEdx_P","Electron_ITSdEdx_P",100, 0.05, 20, 200, 0, 200);
+ SetLogBinningXTH2(hElectronITSdEdxP);
+ fESDList->Add(hElectronITSdEdxP);
+ hPositronITSdEdxP = new TH2F("Positron_ITSdEdx_P","Positron_ITSdEdx_P",100, 0.05, 20, 200, 0, 200);
+ SetLogBinningXTH2(hPositronITSdEdxP);
+ fESDList->Add(hPositronITSdEdxP);
+ hElectronNSigmaITSP = new TH2F("Electron_NSigmaITS_P","Electron_NSigmaITS_P",100, 0.05, 20, 200, 0, 200);
+ SetLogBinningXTH2(hElectronNSigmaITSP);
+ fESDList->Add(hElectronNSigmaITSP);
+ hPositronNSigmaITSP = new TH2F("Positron_NSigmaITS_P","Positron_NSigmaITS_P",100, 0.05, 20, 200, 0, 200);
+ SetLogBinningXTH2(hPositronNSigmaITSP);
+ fESDList->Add(hPositronNSigmaITSP);
+
+
+
+// hGammaXY = new TH2F("Gamma_ConversionPoint_XY","Gamma_ConversionPoint_XY",960,-120,120,960,-120,120);
+// fESDList->Add(hGammaXY);
+// hGammaZR= new TH2F("Gamma_ConversionPoint_ZR","Gamma_ConversionPoint_ZR",1200,-150,150,480,0,120);
+// fESDList->Add(hGammaZR);
- if(fIsMC){
- fTrueList = new TList();
- fTrueList->SetOwner(kTRUE);
- fTrueList->SetName("True QA");
- fOutputList->Add(fTrueList);
-
- hTrueResolutionR = new TH2F("True_ConversionPointResolution_R","True_ConversionPointResolution_R",240,0,120,200,-20,20);
- fTrueList->Add(hTrueResolutionR);
- hTrueResolutionZ = new TH2F("True_ConversionPointResolution_Z","True_ConversionPointResolution_Z",480,-120,120,200,-20,20);
- fTrueList->Add(hTrueResolutionZ);
- hTrueResolutionPhi = new TH2F("True_ConversionPointResolution_Phi","True_ConversionPointResolution_Phi",360,0,2*TMath::Pi(),200,-TMath::Pi()/30., TMath::Pi()/30.);
- fTrueList->Add(hTrueResolutionPhi);
-
- hTrueGammaPt = new TH1F("True_Gamma_Pt","True_Gamma_Pt",250,0,25);
- fTrueList->Add(hTrueGammaPt);
- hTrueGammaPhi = new TH1F("True_Gamma_Phi","True_Gamma_Phi",360,0,2*TMath::Pi());
- fTrueList->Add(hTrueGammaPhi);
- hTrueGammaEta = new TH1F("True_Gamma_Eta","True_Gamma_Eta",600,-1.5,1.5);
- fTrueList->Add(hTrueGammaEta);
- hTrueGammaMass = new TH1F("True_Gamma_Mass","True_Gamma_Mass",1000,0,0.3);
- fTrueList->Add(hTrueGammaMass);
- hTrueGammaChi2perNDF = new TH1F("True_Gamma_Chi2perNDF","True_Gamma_Chi2perNDF",500,0,100);
- fTrueList->Add(hTrueGammaChi2perNDF);
- hTrueGammaPsiPair = new TH1F("True_Gamma_PsiPair","True_Gamma_PsiPair",500,0,2);
- fTrueList->Add(hTrueGammaPsiPair);
- hTrueGammaQt = new TH1F("True_Gamma_Qt","True_Gamma_Qt",400,0,0.1);
- fTrueList->Add(hTrueGammaQt);
- hTrueGammaCosinePointingAngle = new TH1F("True_Gamma_CosinePointingAngle","True_Gamma_CosinePointingAngle",900,0.7,1.);
- fTrueList->Add(hTrueGammaCosinePointingAngle);
- hTrueGammaXY = new TH2F("True_Gamma_ConversionPoint_XY","True_Gamma_ConversionPoint_XY",960,-120,120,960,-120,120);
- fTrueList->Add(hTrueGammaXY);
- hTrueGammaZR= new TH2F("TrueGamma_ConversionPoint_ZR","TrueGamma_ConversionPoint_ZR",1200,-150,150,480,0,120);
- fTrueList->Add(hTrueGammaZR);
-
- hTrueElecPt = new TH2F("True_Electron_Positron_Pt","True_Electron_Positron_Pt",250,0,25,250,0,25);
- fTrueList->Add(hTrueElecPt);
- hTrueElecEta = new TH2F("True_Electron_Positron_Eta","True_Electron_Positron_Eta",600,-1.5,1.5,600,-1.5,1.5);
- fTrueList->Add(hTrueElecEta);
- hTrueElecPhi = new TH2F("True_Electron_Positron_Phi","True_Electron_Positron_Phi",360,0,2*TMath::Pi(),360,0,2*TMath::Pi());
- fTrueList->Add(hTrueElecPhi);
- hTrueElecNfindableClsTPC = new TH1F("True_Electron_findableClusterTPC","True_Electron_findableClusterTPC",100,0,1);
- fTrueList->Add(hTrueElecNfindableClsTPC);
- hTruePosiNfindableClsTPC = new TH1F("True_Positron_findableClusterTPC","True_Positron_findableClusterTPC",100,0,1);
- fTrueList->Add(hTruePosiNfindableClsTPC);
- }
+
+// hElecAsymP = new TH2F("Electron_Asym_vs_P", "Electron_Asym_vs_P",200,0.,20.,200,0.,1.);
+// fESDList->Add(hElecAsymP);
+
+// if(fIsMC){
+// fTrueList = new TList();
+// fTrueList->SetOwner(kTRUE);
+// fTrueList->SetName("True QA");
+// fOutputList->Add(fTrueList);
+//
+// hTrueResolutionR = new TH2F("True_ConversionPointResolution_R","True_ConversionPointResolution_R",240,0,120,200,-20,20);
+// fTrueList->Add(hTrueResolutionR);
+// hTrueResolutionZ = new TH2F("True_ConversionPointResolution_Z","True_ConversionPointResolution_Z",480,-120,120,200,-20,20);
+// fTrueList->Add(hTrueResolutionZ);
+// hTrueResolutionPhi = new TH2F("True_ConversionPointResolution_Phi","True_ConversionPointResolution_Phi",360,0,2*TMath::Pi(),200,-TMath::Pi()/30., TMath::Pi()/30.);
+// fTrueList->Add(hTrueResolutionPhi);
+//
+// hTrueGammaPt = new TH1F("True_Gamma_Pt","True_Gamma_Pt",250,0,25);
+// fTrueList->Add(hTrueGammaPt);
+// hTrueGammaPhi = new TH1F("True_Gamma_Phi","True_Gamma_Phi",360,0,2*TMath::Pi());
+// fTrueList->Add(hTrueGammaPhi);
+// hTrueGammaEta = new TH1F("True_Gamma_Eta","True_Gamma_Eta",600,-1.5,1.5);
+// fTrueList->Add(hTrueGammaEta);
+// hTrueGammaMass = new TH1F("True_Gamma_Mass","True_Gamma_Mass",1000,0,0.3);
+// fTrueList->Add(hTrueGammaMass);
+// hTrueGammaChi2perNDF = new TH1F("True_Gamma_Chi2perNDF","True_Gamma_Chi2perNDF",500,0,100);
+// fTrueList->Add(hTrueGammaChi2perNDF);
+// hTrueGammaPsiPair = new TH1F("True_Gamma_PsiPair","True_Gamma_PsiPair",500,0,2);
+// fTrueList->Add(hTrueGammaPsiPair);
+// hTrueGammaQt = new TH1F("True_Gamma_Qt","True_Gamma_Qt",400,0,0.1);
+// fTrueList->Add(hTrueGammaQt);
+// hTrueGammaCosinePointingAngle = new TH1F("True_Gamma_CosinePointingAngle","True_Gamma_CosinePointingAngle",900,0.7,1.);
+// fTrueList->Add(hTrueGammaCosinePointingAngle);
+// hTrueGammaXY = new TH2F("True_Gamma_ConversionPoint_XY","True_Gamma_ConversionPoint_XY",960,-120,120,960,-120,120);
+// fTrueList->Add(hTrueGammaXY);
+// hTrueGammaZR= new TH2F("TrueGamma_ConversionPoint_ZR","TrueGamma_ConversionPoint_ZR",1200,-150,150,480,0,120);
+// fTrueList->Add(hTrueGammaZR);
+//
+// hTrueElecPt = new TH2F("True_Electron_Positron_Pt","True_Electron_Positron_Pt",250,0,25,250,0,25);
+// fTrueList->Add(hTrueElecPt);
+// hTrueElecEta = new TH2F("True_Electron_Positron_Eta","True_Electron_Positron_Eta",600,-1.5,1.5,600,-1.5,1.5);
+// fTrueList->Add(hTrueElecEta);
+// hTrueElecPhi = new TH2F("True_Electron_Positron_Phi","True_Electron_Positron_Phi",360,0,2*TMath::Pi(),360,0,2*TMath::Pi());
+// fTrueList->Add(hTrueElecPhi);
+// hTrueElecNfindableClsTPC = new TH1F("True_Electron_findableClusterTPC","True_Electron_findableClusterTPC",100,0,1);
+// fTrueList->Add(hTrueElecNfindableClsTPC);
+// hTruePosiNfindableClsTPC = new TH1F("True_Positron_findableClusterTPC","True_Positron_findableClusterTPC",100,0,1);
+// fTrueList->Add(hTruePosiNfindableClsTPC);
+// hTrueElecAsymP = new TH2F("True_Electron_Asym_vs_P", "True_Electron_Asym_vs_P",200,0.,20.,200,0.,1.);
+// fTrueList->Add(hTrueElecAsymP);
+// }
if(fConversionCuts->GetCutHistograms()){
fOutputList->Add(fConversionCuts->GetCutHistograms());
}
}
if(ffillTree){
- TString cutnumber = fConversionCuts->GetCutNumber();
- fStreamQA = new TTreeSRedirector(Form("GammaConvV1_QATree_%s.root",cutnumber.Data()),"recreate");
+ fTreeList = new TList();
+ fTreeList->SetOwner(kTRUE);
+ fTreeList->SetName("TreeList");
+ fOutputList->Add(fTreeList);
+
+ fTreeQA = new TTree("PhotonQA","PhotonQA");
+
+ fTreeQA->Branch("daughterProp",&fDaughterProp);
+ fTreeQA->Branch("recCords",&fGammaConvCoord);
+ fTreeQA->Branch("photonProp",&fGammaPhotonProp);
+ fTreeQA->Branch("pt",&fGammaPt,"fGammaPt/F");
+ fTreeQA->Branch("theta",&fGammaTheta,"fGammaTheta/F");
+ fTreeQA->Branch("chi2ndf",&fGammaChi2NDF,"fGammaChi2NDF/F");
+ if (fIsMC) {
+ fTreeQA->Branch("kind",&fKind,"fKind/b");
+ }
+ fTreeList->Add(fTreeQA);
+
}
fV0Reader=(AliV0ReaderV1*)AliAnalysisManager::GetAnalysisManager()->GetTask("V0ReaderV1");
// Fill Histograms for QA and MC
AliVEvent* event = (AliVEvent*) InputEvent();
+
+
+
AliPIDResponse* pidResonse = ((AliConversionCuts*)fV0Reader->GetConversionCuts())->GetPIDResponse();
- Float_t gammaPt = gamma->GetPhotonPt();
- Float_t gammaPhi = gamma->GetPhotonPhi();
- Float_t gammaTheta = gamma->Theta();
- Float_t gammaChi2NDF = gamma->GetChi2perNDF();
- Float_t gammaQt = gamma->GetArmenterosQt();
- Float_t gammaAlpha = gamma->GetArmenterosAlpha();
- Float_t gammaPsiPair = gamma->GetPsiPair();
- Float_t gammaCosPointing = fConversionCuts->GetCosineOfPointingAngle(gamma,event);
- TVectorF conversionPoint(3);
- conversionPoint(0) = gamma->GetConversionX();
- conversionPoint(1) = gamma->GetConversionY();
- conversionPoint(2) = gamma->GetConversionZ();
- TVectorF daughterProp(20);
+ fGammaPt = gamma->GetPhotonPt();
+
+ fGammaTheta = gamma->Theta();
+ fGammaChi2NDF = gamma->GetChi2perNDF();
+
+ fGammaPhotonProp(0) = gamma->GetArmenterosQt();
+ fGammaPhotonProp(1) = gamma->GetArmenterosAlpha();
+ fGammaPhotonProp(2) = gamma->GetPsiPair();
+ fGammaPhotonProp(3) = fConversionCuts->GetCosineOfPointingAngle(gamma,event);
+ fGammaPhotonProp(4) = gamma->GetMass();
+
+ fGammaConvCoord(0) = gamma->GetConversionX();
+ fGammaConvCoord(1) = gamma->GetConversionY();
+ fGammaConvCoord(2) = gamma->GetConversionZ();
+ fGammaConvCoord(3) = gamma->GetConversionRadius();
+ fGammaConvCoord(4) = gamma->GetPhotonPhi();
+
AliVTrack * negTrack = fConversionCuts->GetTrack(event, gamma->GetTrackLabelNegative());
AliVTrack * posTrack = fConversionCuts->GetTrack(event, gamma->GetTrackLabelPositive());
+
if(!negTrack||!posTrack)return;
- Bool_t isTruePhoton = kFALSE;
- if(fMCEvent && fInputEvent->IsA()==AliVEvent::Class()){
- isTruePhoton = IsTruePhotonESD(gamma);
+ fKind = 9;
+ if(fMCEvent && fInputEvent->IsA()==AliESDEvent::Class()){
+ fKind = IsTruePhotonESD(gamma);
} else if (fMCEvent && fInputEvent->IsA()==AliAODEvent::Class()){
- isTruePhoton = IsTruePhotonAOD(gamma);
+ fKind = IsTruePhotonAOD(gamma);
}
- daughterProp(0) = posTrack->Pt();
- daughterProp(7) = negTrack->Pt();
- daughterProp(1) = posTrack->Theta();
- daughterProp(8) = negTrack->Theta();
- Double32_t signalPos[4] = {0,0,0,0};
- Char_t nclPos[3];
- Char_t nrowsPos[3];
- if (posTrack->GetTPCdEdxInfo()) {
- posTrack->GetTPCdEdxInfo()->GetTPCSignalRegionInfo(signalPos,nclPos,nrowsPos);
- daughterProp(2) = signalPos[0];
- daughterProp(14) = signalPos[1];
- daughterProp(16) = signalPos[2];
+ fDaughterProp(0) = posTrack->Pt();
+ fDaughterProp(7) = negTrack->Pt();
+ fDaughterProp(1) = posTrack->Theta();
+ fDaughterProp(8) = negTrack->Theta();
+// Double32_t signalPos[4] = {0,0,0,0};
+// Char_t nclPos[3];
+// Char_t nrowsPos[3];
+// if (posTrack->GetTPCdEdxInfo()) {
+// posTrack->GetTPCdEdxInfo()->GetTPCSignalRegionInfo(signalPos,nclPos,nrowsPos);
+// fDaughterProp(2) = signalPos[0];
+// fDaughterProp(14) = signalPos[1];
+// fDaughterProp(16) = signalPos[2];
+// } else {
+// fDaughterProp(2) = posTrack->GetTPCsignal();
+// fDaughterProp(14) = 0;
+// fDaughterProp(16) = 0;
+// }
+// Double32_t signalNeg[4] = {0,0,0,0};
+// Char_t nclNeg[3];
+// Char_t nrowsNeg[3];
+// if (negTrack->GetTPCdEdxInfo()) {
+// negTrack->GetTPCdEdxInfo()->GetTPCSignalRegionInfo(signalNeg,nclNeg,nrowsNeg);
+// fDaughterProp(9) = signalNeg[0];
+// fDaughterProp(15) = signalNeg[1];
+// fDaughterProp(17) = signalNeg[2];
+// } else {
+// fDaughterProp(9) = negTrack->GetTPCsignal();
+// fDaughterProp(15) = 0;
+// fDaughterProp(17) = 0;
+// }
+ // dEdx TPC
+ fDaughterProp(2) = posTrack->GetTPCsignal();
+ fDaughterProp(3) = pidResonse->NumberOfSigmasTPC(posTrack,AliPID::kElectron);
+ fDaughterProp(22) = pidResonse->NumberOfSigmasTPC(posTrack,AliPID::kPion);
+ fDaughterProp(9) = negTrack->GetTPCsignal();
+ fDaughterProp(10) = pidResonse->NumberOfSigmasTPC(negTrack,AliPID::kElectron);
+ fDaughterProp(23) = pidResonse->NumberOfSigmasTPC(negTrack,AliPID::kPion);
+ Int_t nPosClusterITS = 0;
+ Int_t nNegClusterITS = 0;
+ for(Int_t itsLayer = 0; itsLayer<6;itsLayer++){
+ if(TESTBIT(negTrack->GetITSClusterMap(),itsLayer)){
+ nNegClusterITS++;
+ }
+ if(TESTBIT(posTrack->GetITSClusterMap(),itsLayer)){
+ nPosClusterITS++;
+ }
+ }
+
+ // ITS signal
+ fDaughterProp(14) = (Float_t)nPosClusterITS;
+ fDaughterProp(15) = (Float_t)nNegClusterITS;
+ if (nPosClusterITS > 0 ){
+ fDaughterProp(16) = posTrack->GetITSsignal();
+ fDaughterProp(20) = pidResonse->NumberOfSigmasITS(posTrack,AliPID::kElectron);
} else {
- daughterProp(2) = posTrack->GetTPCsignal();
- daughterProp(14) = 0;
- daughterProp(16) = 0;
+ fDaughterProp(16) = 1000;
+ fDaughterProp(20) = 20;
}
- Double32_t signalNeg[4] = {0,0,0,0};
- Char_t nclNeg[3];
- Char_t nrowsNeg[3];
- if (negTrack->GetTPCdEdxInfo()) {
- negTrack->GetTPCdEdxInfo()->GetTPCSignalRegionInfo(signalNeg,nclNeg,nrowsNeg);
- daughterProp(9) = signalNeg[0];
- daughterProp(15) = signalNeg[1];
- daughterProp(17) = signalNeg[2];
+ if (nNegClusterITS > 0 ){
+ fDaughterProp(17) = negTrack->GetITSsignal();
+ fDaughterProp(21) = pidResonse->NumberOfSigmasITS(negTrack,AliPID::kElectron);
} else {
- daughterProp(9) = negTrack->GetTPCsignal();
- daughterProp(15) = 0;
- daughterProp(17) = 0;
+ fDaughterProp(17) = 1000;
+ fDaughterProp(21) = 20;
}
- daughterProp(3) = pidResonse->NumberOfSigmasTPC(posTrack,AliPID::kElectron);
- daughterProp(10) = pidResonse->NumberOfSigmasTPC(negTrack,AliPID::kElectron);
+
+ // TOF
if((posTrack->GetStatus() & AliESDtrack::kTOFpid) && !(posTrack->GetStatus() & AliESDtrack::kTOFmismatch)){
Double_t t0pos = pidResonse->GetTOFResponse().GetStartTime(posTrack->P());
Double_t timesPos[5];
posTrack->GetIntegratedTimes(timesPos);
Double_t TOFsignalPos = posTrack->GetTOFsignal();
Double_t dTpos = TOFsignalPos - t0pos - timesPos[0];
- daughterProp(4) = dTpos;
- daughterProp(5) = pidResonse->NumberOfSigmasTOF(posTrack, AliPID::kElectron);
+ fDaughterProp(4) = dTpos;
+ fDaughterProp(5) = pidResonse->NumberOfSigmasTOF(posTrack, AliPID::kElectron);
} else {
- daughterProp(4) = 20000;
- daughterProp(5) = -20;
+ fDaughterProp(4) = 20000;
+ fDaughterProp(5) = -20;
}
if((negTrack->GetStatus() & AliESDtrack::kTOFpid) && !(negTrack->GetStatus() & AliESDtrack::kTOFmismatch)){
Double_t t0neg = pidResonse->GetTOFResponse().GetStartTime(negTrack->P());
negTrack->GetIntegratedTimes(timesNeg);
Double_t TOFsignalNeg = negTrack->GetTOFsignal();
Double_t dTneg = TOFsignalNeg - t0neg - timesNeg[0];
- daughterProp(11) = dTneg;
- daughterProp(12) = pidResonse->NumberOfSigmasTOF(negTrack, AliPID::kElectron);
+ fDaughterProp(11) = dTneg;
+ fDaughterProp(12) = pidResonse->NumberOfSigmasTOF(negTrack, AliPID::kElectron);
} else {
- daughterProp(11) = 20000;
- daughterProp(12) = -20;
+ fDaughterProp(11) = 20000;
+ fDaughterProp(12) = -20;
}
- daughterProp(6) = (Float_t)posTrack->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(gamma->GetConversionRadius()));
- daughterProp(18) = posTrack->GetNcls(1);
- daughterProp(13) = (Float_t)negTrack->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(gamma->GetConversionRadius()));
- daughterProp(19) = negTrack->GetNcls(1);
+ fDaughterProp(6) = (Float_t)posTrack->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(gamma->GetConversionRadius()));
+ fDaughterProp(18) = posTrack->GetNcls(1);
+ fDaughterProp(13) = (Float_t)negTrack->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(gamma->GetConversionRadius()));
+ fDaughterProp(19) = negTrack->GetNcls(1);
- if (fStreamQA){
- if(fMCEvent){
- (*fStreamQA)<<"PhotonQA"
- << "pt=" << gammaPt
- << "phi=" << gammaPhi
- << "theta=" << gammaTheta
- << "chi2ndf=" << gammaChi2NDF
- << "qt="<< gammaQt
- << "alpha=" << gammaAlpha
- << "psipair=" << gammaPsiPair
- << "cosPoint=" << gammaCosPointing
- << "TruePhoton=" << isTruePhoton
- << "conversionPoint=" << &conversionPoint
- << "daugtherProp.=" << &daughterProp
- << "\n";
- }
- else{
- (*fStreamQA)<<"PhotonQA"
- << "pt=" << gammaPt
- << "phi=" << gammaPhi
- << "theta=" << gammaTheta
- << "chi2ndf=" << gammaChi2NDF
- << "qt="<< gammaQt
- << "alpha=" << gammaAlpha
- << "psipair=" << gammaPsiPair
- << "cosPoint=" << gammaCosPointing
- << "conversionPoint=" << &conversionPoint
- << "daugtherProp.=" << &daughterProp
- << "\n";
- }
+ if (fTreeQA){
+ fTreeQA->Fill();
}
}
//_____________________________________________________________________________________________________
void AliAnalysisTaskConversionQA::ProcessQA(AliAODConversionPhoton *gamma){
-
+ AliPIDResponse* pidResonse = ((AliConversionCuts*)fV0Reader->GetConversionCuts())->GetPIDResponse();
+
// Fill Histograms for QA and MC
+
hGammaPt->Fill(gamma->GetPhotonPt());
hGammaPhi->Fill(gamma->GetPhotonPhi());
hGammaEta->Fill(gamma->Eta());
hGammaChi2perNDF->Fill(gamma->GetChi2perNDF());
hGammaPsiPair->Fill(gamma->GetPsiPair());
- hGammaQt->Fill(gamma->GetArmenterosQt());
+ hGammaArmenteros->Fill(gamma->GetArmenterosAlpha(),gamma->GetArmenterosQt());
hGammaCosinePointingAngle->Fill(fConversionCuts->GetCosineOfPointingAngle(gamma,fInputEvent));
- hGammaXY->Fill(gamma->GetConversionX(),gamma->GetConversionY());
- hGammaZR->Fill(gamma->GetConversionZ(),gamma->GetConversionRadius());
+ hGammaInvMass->Fill(gamma->GetMass());
+// hGammaXY->Fill(gamma->GetConversionX(),gamma->GetConversionY());
+// hGammaZR->Fill(gamma->GetConversionZ(),gamma->GetConversionRadius());
AliVTrack * negTrack = fConversionCuts->GetTrack(fInputEvent, gamma->GetTrackLabelNegative());
AliVTrack * posTrack = fConversionCuts->GetTrack(fInputEvent, gamma->GetTrackLabelPositive());
if(!negTrack||!posTrack)return;
- Double_t negtrackPhi = negTrack->Phi();
- Double_t postrackPhi = posTrack->Phi();
- hITSClusterPhi->Fill(negtrackPhi,6);
- hITSClusterPhi->Fill(postrackPhi,6);
- for(Int_t itsLayer = 0; itsLayer<6;itsLayer++){
- if(TESTBIT(negTrack->GetITSClusterMap(),itsLayer)){
- hITSClusterPhi->Fill(negtrackPhi,itsLayer);
- }
- if(TESTBIT(posTrack->GetITSClusterMap(),itsLayer)){
- hITSClusterPhi->Fill(postrackPhi,itsLayer);
- }
- }
hElecPt->Fill(negTrack->Pt(),posTrack->Pt());
hElecEta->Fill(negTrack->Eta(),posTrack->Eta());
hElecNfindableClsTPC->Fill((Float_t)posTrack->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(gamma->GetConversionRadius())));
hPosiNfindableClsTPC->Fill((Float_t)negTrack->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(gamma->GetConversionRadius())));
+ hElecClsTPC->Fill(negTrack->GetNcls(1));
+ hPosiClsTPC->Fill(posTrack->GetNcls(1));
+ //TPC dEdx
+ hElectrondEdxP->Fill(negTrack->P() ,negTrack->GetTPCsignal());
+ hElectronNSigmadEdxP->Fill(negTrack->P() ,pidResonse->NumberOfSigmasTPC(negTrack, AliPID::kElectron));
+ hElectronNSigmaPiondEdxP->Fill(negTrack->P() ,pidResonse->NumberOfSigmasTPC(negTrack, AliPID::kPion));
+ hPositrondEdxP->Fill(posTrack->P() ,posTrack->GetTPCsignal());
+ hPositronNSigmadEdxP->Fill(posTrack->P() ,pidResonse->NumberOfSigmasTPC(posTrack, AliPID::kElectron));
+ hPositronNSigmaPiondEdxP->Fill(posTrack->P() ,pidResonse->NumberOfSigmasTPC(posTrack, AliPID::kPion));
+
+ //TOF signal
+ if((negTrack->GetStatus() & AliESDtrack::kTOFpid) && !(negTrack->GetStatus() & AliESDtrack::kTOFmismatch)){
+ Double_t t0neg = pidResonse->GetTOFResponse().GetStartTime(negTrack->P());
+ Double_t timesNeg[5];
+ negTrack->GetIntegratedTimes(timesNeg);
+ Double_t TOFsignalNeg = negTrack->GetTOFsignal();
+ Double_t dTneg = TOFsignalNeg - t0neg - timesNeg[0];
+ hElectronTOFP->Fill(negTrack->P() ,dTneg);
+ hElectronNSigmaTOFP->Fill(negTrack->P() ,pidResonse->NumberOfSigmasTOF(negTrack, AliPID::kElectron));
+ }
+ if((posTrack->GetStatus() & AliESDtrack::kTOFpid) && !(posTrack->GetStatus() & AliESDtrack::kTOFmismatch)){
+ Double_t t0pos = pidResonse->GetTOFResponse().GetStartTime(posTrack->P());
+ Double_t timesPos[5];
+ posTrack->GetIntegratedTimes(timesPos);
+ Double_t TOFsignalPos = posTrack->GetTOFsignal();
+ Double_t dTpos = TOFsignalPos - t0pos - timesPos[0];
+ hPositronTOFP->Fill(posTrack->P() ,dTpos);
+ hPositronNSigmaTOFP->Fill(posTrack->P() ,pidResonse->NumberOfSigmasTOF(posTrack, AliPID::kElectron));
+ }
+
+ Int_t nPosClusterITS = 0;
+ Int_t nNegClusterITS = 0;
+ for(Int_t itsLayer = 0; itsLayer<6;itsLayer++){
+ if(TESTBIT(negTrack->GetITSClusterMap(),itsLayer)){
+ nNegClusterITS++;
+ }
+ if(TESTBIT(posTrack->GetITSClusterMap(),itsLayer)){
+ nPosClusterITS++;
+ }
+ }
+ Double_t negtrackPhi = negTrack->Phi();
+ Double_t postrackPhi = posTrack->Phi();
+ hITSClusterPhi->Fill(negtrackPhi,nNegClusterITS);
+ hITSClusterPhi->Fill(postrackPhi,nPosClusterITS);
+
+ // ITS signal
+ if (nPosClusterITS > 0 ){
+ hPositronITSdEdxP->Fill(posTrack->P() ,posTrack->GetITSsignal());
+ hPositronNSigmaITSP->Fill(posTrack->P() ,pidResonse->NumberOfSigmasITS(posTrack,AliPID::kElectron));
+ }
+ if (nNegClusterITS > 0 ){
+ hElectronITSdEdxP->Fill(negTrack->P() ,negTrack->GetITSsignal());
+ hElectronNSigmaITSP->Fill(negTrack->P() ,pidResonse->NumberOfSigmasITS(negTrack,AliPID::kElectron));
+ }
+
+// if(gamma->P()!=0){
+// hElecAsymP->Fill(gamma->P(),negTrack->P()/gamma->P());
+// }
// hElecNfindableClsTPC->Fill((Float_t)negTrack->GetNcls(1)/(Float_t)negTrack->GetTPCNclsF());
// hPosiNfindableClsTPC->Fill((Float_t)posTrack->GetNcls(1)/(Float_t)posTrack->GetTPCNclsF());
- if(fMCEvent && fInputEvent->IsA()==AliESDEvent::Class()){
- ProcessTrueQAESD(gamma,(AliESDtrack*)negTrack,(AliESDtrack*)posTrack);
- } else if(fMCEvent && fInputEvent->IsA()==AliAODEvent::Class()){
- ProcessTrueQAAOD(gamma,(AliAODTrack*)negTrack,(AliAODTrack*)posTrack);
- }
+// if(fMCEvent && fInputEvent->IsA()==AliESDEvent::Class()){
+// ProcessTrueQAESD(gamma,(AliESDtrack*)negTrack,(AliESDtrack*)posTrack);
+// } else if(fMCEvent && fInputEvent->IsA()==AliAODEvent::Class()){
+// ProcessTrueQAAOD(gamma,(AliAODTrack*)negTrack,(AliAODTrack*)posTrack);
+// }
}
-//________________________________________________________________________
-void AliAnalysisTaskConversionQA::ProcessTrueQAESD(AliAODConversionPhoton *TruePhotonCandidate, AliESDtrack *elec, AliESDtrack *posi)
-{
- if(!IsTruePhotonESD(TruePhotonCandidate)) return;
- TParticle *negDaughter = TruePhotonCandidate->GetNegativeMCDaughter(fMCStack);
- TParticle *mcPhoton = TruePhotonCandidate->GetMCParticle(fMCStack);
+// //________________________________________________________________________
+// void AliAnalysisTaskConversionQA::ProcessTrueQAESD(AliAODConversionPhoton *TruePhotonCandidate, AliESDtrack *elec, AliESDtrack *posi)
+// {
+//
+// if(IsTruePhotonESD(TruePhotonCandidate)!=0 && IsTruePhotonESD(TruePhotonCandidate)!=5 ) return;
+//
+// TParticle *negDaughter = TruePhotonCandidate->GetNegativeMCDaughter(fMCStack);
+// TParticle *mcPhoton = TruePhotonCandidate->GetMCParticle(fMCStack);
// True Photon
- hTrueResolutionR->Fill(TruePhotonCandidate->GetConversionRadius(),
- TruePhotonCandidate->GetConversionRadius()-negDaughter->R());
- hTrueResolutionZ->Fill(TruePhotonCandidate->GetConversionZ(),
- TruePhotonCandidate->GetConversionZ()-negDaughter->Vz());
- hTrueResolutionPhi->Fill(TruePhotonCandidate->Phi(),
- TruePhotonCandidate->Phi()-mcPhoton->Phi());
- hTrueGammaPt->Fill(TruePhotonCandidate->Pt());
- hTrueGammaPhi->Fill(TruePhotonCandidate->Phi());
- hTrueGammaEta->Fill(TruePhotonCandidate->Eta());
- hTrueGammaMass->Fill(TruePhotonCandidate->GetMass());
- hTrueGammaChi2perNDF->Fill(TruePhotonCandidate->GetChi2perNDF());
- hTrueGammaPsiPair->Fill(TruePhotonCandidate->GetPsiPair());
- hTrueGammaQt->Fill(TruePhotonCandidate->GetArmenterosQt());
- hTrueGammaCosinePointingAngle->Fill(fConversionCuts->GetCosineOfPointingAngle(TruePhotonCandidate,fInputEvent));
- hTrueGammaXY->Fill(TruePhotonCandidate->GetConversionX(),TruePhotonCandidate->GetConversionY());
- hTrueGammaZR->Fill(TruePhotonCandidate->GetConversionZ(),TruePhotonCandidate->GetConversionRadius());
- hTrueElecPt->Fill(elec->Pt(),posi->Pt());
- hTrueElecEta->Fill(elec->Eta(),posi->Eta());
- hTrueElecPhi->Fill(elec->Phi(),posi->Phi());
- hTrueElecNfindableClsTPC
- ->Fill((Float_t)elec->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(TruePhotonCandidate->GetConversionRadius())));
- hTruePosiNfindableClsTPC
- ->Fill((Float_t)posi->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(TruePhotonCandidate->GetConversionRadius())));
+// hTrueResolutionR->Fill(TruePhotonCandidate->GetConversionRadius(),
+// TruePhotonCandidate->GetConversionRadius()-negDaughter->R());
+// hTrueResolutionZ->Fill(TruePhotonCandidate->GetConversionZ(),
+// TruePhotonCandidate->GetConversionZ()-negDaughter->Vz());
+// hTrueResolutionPhi->Fill(TruePhotonCandidate->Phi(),
+// TruePhotonCandidate->Phi()-mcPhoton->Phi());
+// hTrueGammaPt->Fill(TruePhotonCandidate->Pt());
+// hTrueGammaPhi->Fill(TruePhotonCandidate->Phi());
+// hTrueGammaEta->Fill(TruePhotonCandidate->Eta());
+// hTrueGammaMass->Fill(TruePhotonCandidate->GetMass());
+// hTrueGammaChi2perNDF->Fill(TruePhotonCandidate->GetChi2perNDF());
+// hTrueGammaPsiPair->Fill(TruePhotonCandidate->GetPsiPair());
+// hTrueGammaQt->Fill(TruePhotonCandidate->GetArmenterosQt());
+// hTrueGammaCosinePointingAngle->Fill(fConversionCuts->GetCosineOfPointingAngle(TruePhotonCandidate,fInputEvent));
+// hTrueGammaXY->Fill(TruePhotonCandidate->GetConversionX(),TruePhotonCandidate->GetConversionY());
+// hTrueGammaZR->Fill(TruePhotonCandidate->GetConversionZ(),TruePhotonCandidate->GetConversionRadius());
+// hTrueElecPt->Fill(elec->Pt(),posi->Pt());
+// hTrueElecEta->Fill(elec->Eta(),posi->Eta());
+// hTrueElecPhi->Fill(elec->Phi(),posi->Phi());
+// hTrueElecNfindableClsTPC
+// ->Fill((Float_t)elec->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(TruePhotonCandidate->GetConversionRadius())));
+// hTruePosiNfindableClsTPC
+// ->Fill((Float_t)posi->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(TruePhotonCandidate->GetConversionRadius())));
+// if(TruePhotonCandidate->P()!=0){
+// hTrueElecAsymP->Fill(TruePhotonCandidate->P(),elec->P()/TruePhotonCandidate->P());
+// }
+
// hTrueElecNfindableClsTPC->Fill((Float_t)elec->GetNcls(1)/(Float_t)elec->GetTPCNclsF());
// hTruePosiNfindableClsTPC->Fill((Float_t)posi->GetNcls(1)/(Float_t)posi->GetTPCNclsF());
-}
-
-//________________________________________________________________________
-void AliAnalysisTaskConversionQA::ProcessTrueQAAOD(AliAODConversionPhoton *TruePhotonCandidate, AliAODTrack *elec, AliAODTrack *posi)
-{
- if(!IsTruePhotonAOD(TruePhotonCandidate)) return;
-
- TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
- AliAODMCParticle *negDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelNegative());
- AliAODMCParticle *mcPhoton = (AliAODMCParticle*) AODMCTrackArray->At(negDaughter->GetMother());
+// }
+//
+// //________________________________________________________________________
+// void AliAnalysisTaskConversionQA::ProcessTrueQAAOD(AliAODConversionPhoton *TruePhotonCandidate, AliAODTrack *elec, AliAODTrack *posi)
+// {
+//
+// if(IsTruePhotonAOD(TruePhotonCandidate)!=0 && IsTruePhotonESD(TruePhotonCandidate)!=5 ) return;
+//
+// TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
+// AliAODMCParticle *negDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelNegative());
+// AliAODMCParticle *mcPhoton = (AliAODMCParticle*) AODMCTrackArray->At(negDaughter->GetMother());
// True Photon
- hTrueResolutionR->Fill(TruePhotonCandidate->GetConversionRadius(),
- TruePhotonCandidate->GetConversionRadius()-(TMath::Sqrt(negDaughter->Xv()*negDaughter->Xv()+negDaughter->Yv()*negDaughter->Yv())));
- hTrueResolutionZ->Fill(TruePhotonCandidate->GetConversionZ(),
- TruePhotonCandidate->GetConversionZ()-negDaughter->Zv());
- hTrueResolutionPhi->Fill(TruePhotonCandidate->Phi(),
- TruePhotonCandidate->Phi()-mcPhoton->Phi());
- hTrueGammaPt->Fill(TruePhotonCandidate->Pt());
- hTrueGammaPhi->Fill(TruePhotonCandidate->Phi());
- hTrueGammaEta->Fill(TruePhotonCandidate->Eta());
- hTrueGammaMass->Fill(TruePhotonCandidate->GetMass());
- hTrueGammaChi2perNDF->Fill(TruePhotonCandidate->GetChi2perNDF());
- hTrueGammaPsiPair->Fill(TruePhotonCandidate->GetPsiPair());
- hTrueGammaQt->Fill(TruePhotonCandidate->GetArmenterosQt());
- hTrueGammaCosinePointingAngle->Fill(fConversionCuts->GetCosineOfPointingAngle(TruePhotonCandidate,fInputEvent));
- hTrueGammaXY->Fill(TruePhotonCandidate->GetConversionX(),TruePhotonCandidate->GetConversionY());
- hTrueGammaZR->Fill(TruePhotonCandidate->GetConversionZ(),TruePhotonCandidate->GetConversionRadius());
- hTrueElecPt->Fill(elec->Pt(),posi->Pt());
- hTrueElecEta->Fill(elec->Eta(),posi->Eta());
- hTrueElecPhi->Fill(elec->Phi(),posi->Phi());
- hTrueElecNfindableClsTPC
- ->Fill((Float_t)elec->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(TruePhotonCandidate->GetConversionRadius())));
- hTruePosiNfindableClsTPC
- ->Fill((Float_t)posi->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(TruePhotonCandidate->GetConversionRadius())));
+// hTrueResolutionR->Fill(TruePhotonCandidate->GetConversionRadius(),
+// TruePhotonCandidate->GetConversionRadius()-(TMath::Sqrt(negDaughter->Xv()*negDaughter->Xv()+negDaughter->Yv()*negDaughter->Yv())));
+// hTrueResolutionZ->Fill(TruePhotonCandidate->GetConversionZ(),
+// TruePhotonCandidate->GetConversionZ()-negDaughter->Zv());
+// hTrueResolutionPhi->Fill(TruePhotonCandidate->Phi(),
+// TruePhotonCandidate->Phi()-mcPhoton->Phi());
+// hTrueGammaPt->Fill(TruePhotonCandidate->Pt());
+// hTrueGammaPhi->Fill(TruePhotonCandidate->Phi());
+// hTrueGammaEta->Fill(TruePhotonCandidate->Eta());
+// hTrueGammaMass->Fill(TruePhotonCandidate->GetMass());
+// hTrueGammaChi2perNDF->Fill(TruePhotonCandidate->GetChi2perNDF());
+// hTrueGammaPsiPair->Fill(TruePhotonCandidate->GetPsiPair());
+// hTrueGammaQt->Fill(TruePhotonCandidate->GetArmenterosQt());
+// hTrueGammaCosinePointingAngle->Fill(fConversionCuts->GetCosineOfPointingAngle(TruePhotonCandidate,fInputEvent));
+// hTrueGammaXY->Fill(TruePhotonCandidate->GetConversionX(),TruePhotonCandidate->GetConversionY());
+// hTrueGammaZR->Fill(TruePhotonCandidate->GetConversionZ(),TruePhotonCandidate->GetConversionRadius());
+// hTrueElecPt->Fill(elec->Pt(),posi->Pt());
+// hTrueElecEta->Fill(elec->Eta(),posi->Eta());
+// hTrueElecPhi->Fill(elec->Phi(),posi->Phi());
+// hTrueElecNfindableClsTPC
+// ->Fill((Float_t)elec->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(TruePhotonCandidate->GetConversionRadius())));
+// hTruePosiNfindableClsTPC
+// ->Fill((Float_t)posi->GetTPCClusterInfo(2,0,fConversionCuts->GetFirstTPCRow(TruePhotonCandidate->GetConversionRadius())));
// hTrueElecNfindableClsTPC->Fill((Float_t)elec->GetNcls(1)/(Float_t)elec->GetTPCNclsF());
// hTruePosiNfindableClsTPC->Fill((Float_t)posi->GetNcls(1)/(Float_t)posi->GetTPCNclsF());
-}
+// }
//________________________________________________________________________
void AliAnalysisTaskConversionQA::CountTracks(){
return;
}
//________________________________________________________________________
+/*
Bool_t AliAnalysisTaskConversionQA::IsTruePhotonESD(AliAODConversionPhoton *TruePhotonCandidate)
{
TParticle *posDaughter = TruePhotonCandidate->GetPositiveMCDaughter(fMCStack);
return kTRUE;
}
+*/
+UInt_t AliAnalysisTaskConversionQA::IsTruePhotonESD(AliAODConversionPhoton *TruePhotonCandidate)
+{
+
+
+ UInt_t kind = 9;
+ TParticle *posDaughter = TruePhotonCandidate->GetPositiveMCDaughter(fMCStack);
+ TParticle *negDaughter = TruePhotonCandidate->GetNegativeMCDaughter(fMCStack);
+ TParticle *Photon = TruePhotonCandidate->GetMCParticle(fMCStack);
+ Int_t motherLabelPhoton;
+ Int_t pdgCodePos = 0;
+ Int_t pdgCodeNeg = 0;
+ Int_t pdgCode = 0;
+
+
+ if(posDaughter == NULL || negDaughter == NULL) {
+ kind = 9;
+ // return kFALSE; // One particle does not exist
+
+ } else if( posDaughter->GetMother(0) != negDaughter->GetMother(0) || (posDaughter->GetMother(0) == negDaughter->GetMother(0) && posDaughter->GetMother(0) ==-1)) {
+ // kind = 1;
+ return 1;
+ pdgCodePos=TMath::Abs(posDaughter->GetPdgCode());
+ pdgCodeNeg=TMath::Abs(negDaughter->GetPdgCode());
+ if(pdgCodePos==11 && pdgCodeNeg==11) return 10; //Electron Combinatorial
+ if(pdgCodePos==11 && pdgCodeNeg==11 &&
+ (posDaughter->GetMother(0) == negDaughter->GetMother(0) && posDaughter->GetMother(0) ==-1)) return 15; //direct Electron Combinatorial
+
+ if(pdgCodePos==211 && pdgCodeNeg==211) return 11; //Pion Combinatorial
+ if((pdgCodePos==211 && pdgCodeNeg==2212) ||(pdgCodePos==2212 && pdgCodeNeg==211)) return 12; //Pion, Proton Combinatorics
+ if((pdgCodePos==211 && pdgCodeNeg==11) ||(pdgCodePos==11 && pdgCodeNeg==211)) return 13; //Pion, Electron Combinatorics
+ if(pdgCodePos==321 || pdgCodeNeg==321) return 14; //Kaon combinatorics
+ }else{
+
+ pdgCodePos=posDaughter->GetPdgCode();
+ pdgCodeNeg=negDaughter->GetPdgCode();
+ motherLabelPhoton= Photon->GetMother(0);
+ if ( TruePhotonCandidate->GetMCParticle(fMCStack)->GetPdgCode()) pdgCode = TruePhotonCandidate->GetMCParticle(fMCStack)->GetPdgCode();
+
+ if(TMath::Abs(pdgCodePos)!=11 || TMath::Abs(pdgCodeNeg)!=11) return 2; // true from hadronic decays
+ else if ( !(pdgCodeNeg==pdgCodePos)){
+ if(pdgCode == 111) return 3; // pi0 Dalitz
+ else if (pdgCode == 221) return 4; // eta Dalitz
+ else if (!(negDaughter->GetUniqueID() != 5 || posDaughter->GetUniqueID() !=5)){
+ if(pdgCode == 22 && motherLabelPhoton < fMCStack->GetNprimary()){
+ return 0; // primary photons
+ } else if (pdgCode == 22){
+ return 5; //secondary photons
+ }
+ }
+ }
+ }
+
+ return kind;
+}
//________________________________________________________________________
-Bool_t AliAnalysisTaskConversionQA::IsTruePhotonAOD(AliAODConversionPhoton *TruePhotonCandidate)
+UInt_t AliAnalysisTaskConversionQA::IsTruePhotonAOD(AliAODConversionPhoton *TruePhotonCandidate)
{
- TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
- AliAODMCParticle *posDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelPositive());
- AliAODMCParticle *negDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelNegative());
-
- if(posDaughter == NULL || negDaughter == NULL) return kFALSE; // One particle does not exist
- Int_t pdgCode[2] = {abs(posDaughter->GetPdgCode()),abs(negDaughter->GetPdgCode())};
- if(posDaughter->GetMother() != negDaughter->GetMother()) return kFALSE;
- else if(posDaughter->GetMother() == -1) return kFALSE;
-
- if(pdgCode[0]!=11 || pdgCode[1]!=11) return kFALSE; //One Particle is not a electron
- if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode()) return kFALSE; // Same Charge
+ UInt_t kind = 9;
- if(((posDaughter->GetMCProcessCode())) != 5 || ((negDaughter->GetMCProcessCode())) != 5) return kFALSE;// check if the daughters come from a conversion
- // STILL A BUG IN ALIROOT >>8 HAS TPO BE REMOVED AFTER FIX
+ TClonesArray *AODMCTrackArray = dynamic_cast<TClonesArray*>(fInputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
+ AliAODMCParticle *posDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelPositive());
+ AliAODMCParticle *negDaughter = (AliAODMCParticle*) AODMCTrackArray->At(TruePhotonCandidate->GetMCLabelNegative());
+ AliAODMCParticle *Photon = (AliAODMCParticle*) AODMCTrackArray->At(posDaughter->GetMother());
+ Int_t motherLabelPhoton = Photon->GetMother();
+ Int_t pdgCodePos = 0;
+ Int_t pdgCodeNeg = 0;
+ Int_t pdgCode = 0;
+
+ if(posDaughter == NULL || negDaughter == NULL) {
+ kind = 9;
+ // return kFALSE; // One particle does not exist
- AliAODMCParticle *Photon = (AliAODMCParticle*) AODMCTrackArray->At(posDaughter->GetMother());
- if(Photon->GetPdgCode() != 22) return kFALSE; // Mother is no Photon
+ } else if( posDaughter->GetMother() != negDaughter->GetMother() || (posDaughter->GetMother() == negDaughter->GetMother() && posDaughter->GetMother() ==-1)) {
+ kind = 1;
+
+ pdgCodePos=TMath::Abs(posDaughter->GetPdgCode());
+ pdgCodeNeg=TMath::Abs(negDaughter->GetPdgCode());
+ if(pdgCodePos==11 && pdgCodeNeg==11) kind = 10; //Electron Combinatorial
+ if(pdgCodePos==11 && pdgCodeNeg==11 &&
+ (posDaughter->GetMother() == negDaughter->GetMother() && posDaughter->GetMother() ==-1))kind = 15; //direct Electron Combinatorial
+
+ if(pdgCodePos==211 && pdgCodeNeg==211) kind = 11; //Pion Combinatorial
+ if((pdgCodePos==211 && pdgCodeNeg==2212) ||(pdgCodePos==2212 && pdgCodeNeg==211)) kind = 12; //Pion, Proton Combinatorics
+ if((pdgCodePos==211 && pdgCodeNeg==11) ||(pdgCodePos==11 && pdgCodeNeg==211)) kind = 13; //Pion, Electron Combinatorics
+ if(pdgCodePos==321 || pdgCodeNeg==321) kind = 14; //Kaon combinatorics
+ }else{
+
+ pdgCodePos=posDaughter->GetPdgCode();
+ pdgCodeNeg=negDaughter->GetPdgCode();
+
+ if ( TruePhotonCandidate->GetMCParticle(fMCStack)->GetPdgCode())
+ pdgCode = TruePhotonCandidate->GetMCParticle(fMCStack)->GetPdgCode();
+ if(TMath::Abs(pdgCodePos)!=11 || TMath::Abs(pdgCodeNeg)!=11) kind = 2; // true from hadronic decays
+ else if ( !(pdgCodeNeg==pdgCodePos)){
+ if(pdgCode == 111) kind = 3; // pi0 Dalitz
+ else if (pdgCode == 221) kind = 4; // eta Dalitz
+ else if (!(negDaughter->GetMCProcessCode() != 5 || posDaughter->GetMCProcessCode() !=5)){
+ if(pdgCode == 22 && motherLabelPhoton < fMCStack->GetNprimary()){
+ kind = 0; // primary photons
+ } else if (pdgCode == 22){
+ kind = 5; //secondary photons
+ }
+ }
+ }
+ }
+
+
+ return kind;
+
- return kTRUE;
}
//________________________________________________________________________
}
}
+void AliAnalysisTaskConversionQA::SetLogBinningXTH2(TH2* histoRebin){
+ TAxis *axisafter = histoRebin->GetXaxis();
+ Int_t bins = axisafter->GetNbins();
+ Double_t from = axisafter->GetXmin();
+ Double_t to = axisafter->GetXmax();
+ Double_t *newbins = new Double_t[bins+1];
+ newbins[0] = from;
+ Double_t factor = TMath::Power(to/from, 1./bins);
+ for(Int_t i=1; i<=bins; ++i) newbins[i] = factor * newbins[i-1];
+ axisafter->Set(bins, newbins);
+ delete [] newbins;
+
+}
+
//________________________________________________________________________
void AliAnalysisTaskConversionQA::Terminate(Option_t *)
{