-/**************************************************************************
+ /**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* *
* Author: The ALICE Off-line Project. *
// A set of histograms is created.
//==============================================================================
-#ifndef AliHMPIDTaskQA_CXX
-#define AliHMPIDTaskQA_CXX
+
+#ifndef AliHMPIDTASKQA_CXX
+#define AliHMPIDTASKQA_CXX
#include "TH1.h"
#include "TFile.h"
#include "TCanvas.h"
#include "TGraphErrors.h"
+#include "AliPID.h"
+#include "AliVEvent.h"
+#include "AliVParticle.h"
+#include "AliVTrack.h"
+#include "AliESDtrackCuts.h"
+#include "AliAnalysisFilter.h"
#include "AliAnalysisManager.h"
#include "AliESDInputHandler.h"
#include "AliMCEventHandler.h"
AliHMPIDTaskQA::AliHMPIDTaskQA() :
fESD(0x0),fMC(0x0),fUseMC(kTRUE),
fHmpHistList(0x0),
- fHmpPesdPhmp(0x0),fHmpCkovPesd(0x0),fHmpCkovPhmp(0x0),
- fHmpMipCharge3cm(0x0),fHmpMipTrkDist(0x0),
- fHmpTrkFlags(0x0),
- fN1(6),
- fN2(8),
- fPionEff(0x0),
- fKaonEff(0x0),
- fProtEff(0x0),
- fPionTot(0x0),
- fKaonTot(0x0),
- fProtTot(0x0),
- fPionNot(0x0),
- fKaonNot(0x0),
- fProtNot(0x0),
- fPionCon(0x0),
- fKaonCon(0x0),
- fProtCon(0x0)
+ fHmpNevents(0x0),
+ fZvertex(0x0),
+ fTrackCuts(0x0),
+ fTrackFilter(0x0),
+ fTree(0x0)
{
//
//Default ctor
//
- for (Int_t i=0; i<7; i++){
- fHmpPhotons[i] = 0x0;
- fHmpPhotP[i] = 0x0;
- fHmpPhotSin2th[i] = 0x0;
- fHmpMipTrkDistPosX[i] = fHmpMipTrkDistNegX[i] = 0x0;
- fHmpMipTrkDistPosY[i] = fHmpMipTrkDistNegY[i] = 0x0;
- fHmpMipCharge[i] = 0x0;
- }
+ for (Int_t i=0; i<23; i++) fVar[i]=0;
}
//___________________________________________________________________________
AliAnalysisTaskSE(name),
fESD(0x0), fMC(0x0), fUseMC(kTRUE),
fHmpHistList(0x0),
- fHmpPesdPhmp(0x0),fHmpCkovPesd(0x0),fHmpCkovPhmp(0x0),
- fHmpMipCharge3cm(0x0),fHmpMipTrkDist(0x0),
- fHmpTrkFlags(0x0),
- fN1(6),
- fN2(8),
- fPionEff(0x0),
- fKaonEff(0x0),
- fProtEff(0x0),
- fPionTot(0x0),
- fKaonTot(0x0),
- fProtTot(0x0),
- fPionNot(0x0),
- fKaonNot(0x0),
- fProtNot(0x0),
- fPionCon(0x0),
- fKaonCon(0x0),
- fProtCon(0x0)
+ fHmpNevents(0x0),
+ fZvertex(0x0),
+ fTrackCuts(0x0),
+ fTrackFilter(0x0),
+ fTree(0x0)
{
//
// Constructor. Initialization of Inputs and Outputs
//
- for (Int_t i=0; i<7; i++){
- fHmpPhotons[i] = 0x0;
- fHmpPhotP[i] = 0x0;
- fHmpPhotSin2th[i] = 0x0;
- fHmpMipTrkDistPosX[i] = fHmpMipTrkDistNegX[i] = 0x0;
- fHmpMipTrkDistPosY[i] = fHmpMipTrkDistNegY[i] = 0x0;
- fHmpMipCharge[i] = 0x0;
- }
+ for (Int_t i=0; i<23; i++) fVar[i]=0;
DefineOutput(1,TList::Class());
+ DefineOutput(2,TTree::Class());
}
//___________________________________________________________________________
fMC = c.fMC;
fUseMC = c.fUseMC;
fHmpHistList = c.fHmpHistList;
- fHmpPesdPhmp = c.fHmpPesdPhmp;
- fHmpCkovPesd = c.fHmpCkovPesd;
- fHmpCkovPhmp = c.fHmpCkovPhmp;
- fHmpMipCharge3cm = c.fHmpMipCharge3cm;
- fHmpMipTrkDist = c.fHmpMipTrkDist;
- fHmpTrkFlags = c.fHmpTrkFlags;
- fN1 = c.fN1;
- fN2 = c.fN2;
- fPionEff = c.fPionEff;
- fKaonEff = c.fKaonEff;
- fProtEff = c.fProtEff;
- fPionTot = c.fPionTot;
- fKaonTot = c.fKaonTot;
- fProtTot = c.fProtTot;
- fPionNot = c.fPionNot;
- fKaonNot = c.fKaonNot;
- fProtNot = c.fProtNot;
- fPionCon = c.fPionCon;
- fKaonCon = c.fKaonCon;
- fProtCon = c.fProtCon;
- for (Int_t i=0; i<7; i++){
- fHmpPhotons[i] = c.fHmpPhotons[i];
- fHmpPhotP[i] = c.fHmpPhotP[i];
- fHmpPhotSin2th[i] = c.fHmpPhotSin2th[i];
- fHmpMipTrkDistPosX[i] = c.fHmpMipTrkDistPosX[i];
- fHmpMipTrkDistNegX[i] = c.fHmpMipTrkDistNegX[i];
- fHmpMipTrkDistPosY[i] = c.fHmpMipTrkDistPosY[i];
- fHmpMipTrkDistNegY[i] = c.fHmpMipTrkDistNegY[i];
- fHmpMipCharge[i] = c.fHmpMipCharge[i];
- }
+ fHmpNevents = c.fHmpNevents;
+ fZvertex = c.fZvertex;
+ fTrackCuts = c.fTrackCuts;
+ fTrackFilter = c.fTrackFilter;
+ fTree = c.fTree;
+ for (Int_t i=0; i<23; i++) fVar[i]=c.fVar[i];
}
return *this;
}
AliAnalysisTaskSE(c),
fESD(c.fESD),fMC(c.fMC),fUseMC(c.fUseMC),
fHmpHistList(c.fHmpHistList),
- fHmpPesdPhmp(c.fHmpPesdPhmp),fHmpCkovPesd(c.fHmpCkovPesd),fHmpCkovPhmp(c.fHmpCkovPhmp),
- fHmpMipCharge3cm(c.fHmpMipCharge3cm),fHmpMipTrkDist(c.fHmpMipTrkDist),
- fHmpTrkFlags(c.fHmpTrkFlags),
- fN1(c.fN1),
- fN2(c.fN2),
- fPionEff(c.fPionEff),
- fKaonEff(c.fKaonEff),
- fProtEff(c.fProtEff),
- fPionTot(c.fPionTot),
- fKaonTot(c.fKaonTot),
- fProtTot(c.fProtTot),
- fPionNot(c.fPionNot),
- fKaonNot(c.fKaonNot),
- fProtNot(c.fProtNot),
- fPionCon(c.fPionCon),
- fKaonCon(c.fKaonCon),
- fProtCon(c.fProtCon)
+ fHmpNevents(c.fHmpNevents),
+ fZvertex(c.fZvertex),
+ fTrackCuts(c.fTrackCuts),
+ fTrackFilter(c.fTrackFilter),
+ fTree(c.fTree)
{
//
// Copy Constructor
//
- for (Int_t i=0; i<7; i++){
- fHmpPhotons[i] = c.fHmpPhotons[i];
- fHmpPhotP[i] = c.fHmpPhotP[i];
- fHmpPhotSin2th[i] = c.fHmpPhotSin2th[i];
- fHmpMipTrkDistPosX[i] = c.fHmpMipTrkDistPosX[i];
- fHmpMipTrkDistNegX[i] = c.fHmpMipTrkDistNegX[i];
- fHmpMipTrkDistPosY[i] = c.fHmpMipTrkDistPosY[i];
- fHmpMipTrkDistNegY[i] = c.fHmpMipTrkDistNegY[i];
- fHmpMipCharge[i] = c.fHmpMipCharge[i];
- }
+ for (Int_t i=0; i<23; i++) fVar[i]=c.fVar[i];
}
//___________________________________________________________________________
}
//___________________________________________________________________________
-void AliHMPIDTaskQA::ConnectInputData(Option_t *option)
+void AliHMPIDTaskQA::ConnectInputData(Option_t *)
{
- AliAnalysisTaskSE::ConnectInputData(option);
-
// Connect ESD here
+
AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
if (!esdH) {
AliDebug(2,Form("ERROR: Could not get ESDInputHandler"));
if (!mcH) {
AliDebug(2,Form("ERROR: Could not get MCEventHandler"));
fUseMC = kFALSE;
- }
+ } else
+ fMC = mcH->MCEvent();
+ if (!fMC) AliDebug(2,Form("ERROR: Could not get MCEvent"));
}
+
+ fTrackCuts = new AliESDtrackCuts("fTrackCuts", "Standard");
+ fTrackCuts->SetAcceptKinkDaughters(kFALSE);
+ fTrackCuts->SetMinNClustersTPC(70); // changed default value 80 -> 70 (mtangaro)
+ fTrackCuts->SetMaxChi2PerClusterTPC(4);
+ fTrackCuts->SetMaxDCAToVertexXY(3);
+ fTrackCuts->SetMaxDCAToVertexZ(3);
+ fTrackCuts->SetRequireTPCRefit(kTRUE);
+ fTrackCuts->SetRequireITSRefit(kTRUE);
+ fTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
+
+ fTrackFilter = new AliAnalysisFilter("trackFilter");
+ fTrackFilter->AddCuts(fTrackCuts);
+
}
-
-//___________________________________________________________________________
+//***************************************************************************************************************************************************************************
void AliHMPIDTaskQA::UserExec(Option_t *)
{
- Double_t priors[10]={1.,1.,1.,1.,1.,0.,0.,0.,0.,0.}; //{0.01,0.01,0.83,0.10,0.5};
- Double_t probs[5];
- AliPID *pPid = new AliPID();
- pPid->SetPriors(priors);
- AliESDtrack *track=0;
- TParticle *pPart=0;
- AliStack* pStack = 0;
- Int_t label = -1;
- if (fUseMC){
- AliMCEventHandler *mcH = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
- if (mcH) {
- fMC = mcH->MCEvent();
- pStack = fMC->Stack();
- } else {
- AliFatal("fMC flag set but MC handler not available");
- return;
- }
+
+ fHmpNevents->Fill(0);
+
+ const AliESDVertex *vertex = fESD->GetPrimaryVertexTracks();
+
+ if(!vertex || !vertex->GetStatus() || vertex->GetNContributors()<1) {
+
+ // SPD vertex
+ vertex = fESD->GetPrimaryVertexSPD();
+ if(!vertex) return;
+ if(!vertex->GetStatus()) return;
+ if(vertex->GetNContributors()<1) return; // no good vertex, skip event
+
}
+
+ fHmpNevents->Fill(1);
+
+ Double_t vtxPos[3] = {999, 999, 999};
+ if(vertex) vertex->GetXYZ(vtxPos);
+ fZvertex->Fill(vtxPos[2]);
+
+ // vertex cut
+ if (TMath::Abs(vtxPos[2]) > 10.) return;
+
+ AliESDtrack *track = 0;
+
+ Double_t ktol = 0.001;
//
// Main loop function, executed on Event basis
//
-
- if( !fESD->GetPrimaryVertex()) return;
- if( fESD->GetPrimaryVertex()->GetNContributors() < 1 ) return;
- if( TMath::Abs(fESD->GetPrimaryVertex()->GetZ()) > 10.0 /* cm */) return;
-
-
- for (Int_t iTrack = 0; iTrack < fESD->GetNumberOfTracks(); iTrack++) {
+ for (Int_t iTrack = 0; iTrack<fESD->GetNumberOfTracks(); iTrack++) {
track = fESD->GetTrack(iTrack);
if(!track) continue;
- if(! track->IsOn(AliESDtrack::kITSrefit) || !track->IsOn(AliESDtrack::kITSrefit) ) continue;
-
- Double_t rin[3], rout[3];
- track->GetInnerXYZ(rin);
- track->GetOuterXYZ(rout);
- Double_t ktol = 0.001;
- Double_t thetaCh = track->GetHMPIDsignal();
-
- if(Equal(thetaCh,-20.,ktol)) fHmpTrkFlags->Fill(0);
- else if(Equal(thetaCh,-9.,ktol)) fHmpTrkFlags->Fill(1);
- else if(Equal(thetaCh,-5.,ktol)) fHmpTrkFlags->Fill(2);
- else if(Equal(thetaCh,-11.,ktol)) fHmpTrkFlags->Fill(3);
- else if(Equal(thetaCh,-22.,ktol)) fHmpTrkFlags->Fill(4);
- else fHmpTrkFlags->Fill(4);
-
- if(Equal(thetaCh,-20.,ktol)) continue;
+
+ // pT min
+ if ( track->Pt() < 0.2 ) continue;
+
+ // TPC clust
+ if( track->GetNcls(1) < 70 ) continue;
+
+ // DCA cut
+ Float_t b[2];
+ Float_t bCov[3];
+ track->GetImpactParameters(b,bCov);
+ if( TMath::Sqrt(b[0]*b[0] + b[1]*b[1]) > 2 ) continue;
+
+ // ITS-TPC refit
+ if( !track->IsOn(AliESDtrack::kITSrefit) ) continue;
+ if( !track->IsOn(AliESDtrack::kTPCrefit) ) continue;
+
+ //HMPID cuts
+
+ if(Equal(track->GetHMPIDsignal(),-20.,ktol)) continue;
if(track->GetHMPIDcluIdx() < 0) continue;
Int_t q, nph;
Float_t xpc, ypc, th, ph;
track->GetHMPIDmip(x,y,q,nph);
track->GetHMPIDtrk(xpc,ypc,th,ph);
-
+
if(Equal(x,0.,ktol) && Equal(y,0.,ktol) && Equal(xpc,0.,ktol) && Equal(ypc,0.,ktol)) continue;
- Float_t sign = track->GetSign();
- Int_t ch = track->GetHMPIDcluIdx()/1000000;
- if( ch < 0 || ch > 6 ) continue; //Chamber numbering is [0,6]
+ Double_t pHmp[3] = {0}, pHmp3 = 0;
+ if (track->GetOuterHmpPxPyPz(pHmp)) pHmp3 = TMath::Sqrt(pHmp[0]*pHmp[0]+pHmp[1]*pHmp[1]+pHmp[2]*pHmp[2]);
- if (sign > 0.) fHmpMipTrkDistPosX[ch]->Fill(xpc - x), fHmpMipTrkDistPosY[ch]->Fill(ypc - y);
- if (sign < 0.) fHmpMipTrkDistNegX[ch]->Fill(xpc - x), fHmpMipTrkDistNegY[ch]->Fill(ypc - y);
- fHmpMipCharge[ch]->Fill(q);
- Double_t dist = TMath::Sqrt((xpc - x)*(xpc - x) + (ypc - y)*(ypc - y));
- if (dist <= 3.0) fHmpMipCharge3cm->Fill(q);
- fHmpMipTrkDist->Fill(dist);
-
- track->GetHMPIDpid(probs);
- pPid->SetProbabilities(probs);
- if (fUseMC){
- if ((label = track->GetLabel()) < 0) continue;
- pPart = pStack->Particle(label);
- }
-
- if(thetaCh > 0 ){
- Double_t pHmp[3] = {0}, pHmp3 = 0;
- if (track->GetOuterHmpPxPyPz(pHmp)) pHmp3 = TMath::Sqrt(pHmp[0]*pHmp[0]+pHmp[1]*pHmp[1]+pHmp[2]*pHmp[2]);
- if (pHmp3) fHmpPesdPhmp->Fill(track->P(),pHmp3);
- fHmpCkovPesd->Fill(track->P(),thetaCh);
- if (pHmp3) fHmpCkovPhmp->Fill(pHmp3,thetaCh);
- fHmpPhotons[ch]->Fill(nph);
- fHmpPhotP[ch]->Fill(pHmp3,nph);
- Double_t sin2 = TMath::Power(TMath::Sin(th),2);
- fHmpPhotSin2th[ch]->Fill(sin2,nph);
-
- if (fUseMC && dist<0.5 && TMath::Abs(th)<0.13){
- if (!pStack->IsPhysicalPrimary(label)) continue;
- if (track->Pt()<1. || track->Pt()>5.) continue;
- Int_t pdgCode = TMath::Abs(pPart->GetPdgCode());
- Int_t ptBin=(Int_t) (2*(track->Pt()-1));
- if (pdgCode!=2212) fProtCon->Fill(ptBin);
- if (pdgCode==2212){
- fProtTot->Fill(ptBin);
- fProtEff->Fill(ptBin,pPid->GetProbability(AliPID::kProton));
- fPionNot->Fill(ptBin,pPid->GetProbability(AliPID::kPion));
- fKaonNot->Fill(ptBin,pPid->GetProbability(AliPID::kKaon));
- }
- if (pdgCode!=211) fPionCon->Fill(ptBin);
- if (pdgCode!=321) fKaonCon->Fill(ptBin);
- if (pdgCode==211){
- if (ptBin < 6){
- Float_t weight=pPid->GetProbability(AliPID::kElectron)+
- pPid->GetProbability(AliPID::kMuon)+
- pPid->GetProbability(AliPID::kPion);
- fPionTot->Fill(ptBin);
- fPionEff->Fill(ptBin,weight);
- fKaonNot->Fill(ptBin,pPid->GetProbability(AliPID::kKaon));
- }
- fProtNot->Fill(ptBin,pPid->GetProbability(AliPID::kProton));
- }
- if (pdgCode==321){
- if (ptBin < 6){
- fKaonTot->Fill(ptBin);
- fKaonEff->Fill(ptBin,pPid->GetProbability(AliPID::kKaon));
- fPionNot->Fill(ptBin,(pPid->GetProbability(AliPID::kPion)));
- }
- fProtNot->Fill(ptBin,(pPid->GetProbability(AliPID::kProton)));
- }
- }
- }//there is signal
+ fVar[0] = track->GetHMPIDcluIdx()/1000000;
+ fVar[1] = pHmp3;
+ fVar[2] = (Float_t)track->P();
+ fVar[3] = xpc;
+ fVar[4] = ypc;
+ fVar[5] = x;
+ fVar[6] = y;
+ fVar[7] = (Float_t)track->GetHMPIDsignal();
+ fVar[8] = q;
+ fVar[9] = th;
+ fVar[10] = ph;
+ fVar[11] = (Float_t)track->GetSign();
+ fVar[12] = (Float_t)nph;
+ fVar[13] = track->GetHMPIDcluIdx()%1000000/1000; // cluster size
+ fVar[14] = (Float_t)track->Eta();
+ fVar[15] = (Float_t)track->Phi();
+ fVar[16] = (Float_t)pHmp[0];
+ fVar[17] = (Float_t)pHmp[1];
+ fVar[18] = (Float_t)pHmp[2];
+ fVar[19] = (Float_t)track->Px();
+ fVar[20] = (Float_t)track->Py();
+ fVar[21] = (Float_t)track->Pz();
+ fVar[22] = (Float_t)track->GetHMPIDchi2();
+
+ fTree->Fill();
+
}//track loop
- delete pPid;
/* PostData(0) is taken care of by AliAnalysisTaskSE */
PostData(1,fHmpHistList);
+ PostData(2,fTree);
}
-
//___________________________________________________________________________
void AliHMPIDTaskQA::Terminate(Option_t*)
{
// the results graphically or save the results to file.
Info("Terminate"," ");
+
+ if (!fUseMC) return;
+
+ fHmpHistList = dynamic_cast<TList*> (GetOutputData(1));
+
+ if (!fHmpHistList) {
+ AliError("Histogram List is not available");
+ return;
+ }
+
+
AliAnalysisTaskSE::Terminate();
}
-
//___________________________________________________________________________
void AliHMPIDTaskQA::UserCreateOutputObjects() {
//
fHmpHistList = new TList();
fHmpHistList->SetOwner();
- fHmpPesdPhmp = new TH2F("fHmpPesdPhmp","HMPID: ESD p - running p;HMP p (GeV/c);ESD p (Gev/c)",100,0,10,100,0,10);
- fHmpHistList->Add(fHmpPesdPhmp);
-
- fHmpCkovPesd = new TH2F("fHmpCkovPesd","HMPID: ThetaCherenkov vs P;p_esd (GeV/c);#Theta_C;Entries",500,0,10,500,0,1.0);
- fHmpHistList->Add(fHmpCkovPesd);
-
- fHmpCkovPhmp = new TH2F("fHmpCkovPhmp","HMPID: ThetaCherenkov vs P;p_hmp (GeV/c);#Theta_C;Entries",500,0,10,500,0,1.0);
- fHmpHistList->Add(fHmpCkovPhmp);
-
- for (Int_t i=0; i<7; i++){
- TString title=Form("MIP-Track distance in local X, Chamber %d;distance (cm);Entries",i);
- fHmpMipTrkDistPosX[i] = new TH1F(Form("fHmpMipTrkDistPosX%d",i),title.Data(),800,-20,20);
- fHmpHistList->Add(fHmpMipTrkDistPosX[i]);
- fHmpMipTrkDistNegX[i] = new TH1F(Form("fHmpMipTrkDistNegX%d",i),title.Data(),800,-20,20);
- fHmpHistList->Add(fHmpMipTrkDistNegX[i]);
-
- title=Form("MIP-Track distance in local Y, Chamber %d;distance (cm);Entries",i);
- fHmpMipTrkDistPosY[i] = new TH1F(Form("fHmpMipTrkDistPosY%d",i),title.Data(),800,-20,20);
- fHmpHistList->Add(fHmpMipTrkDistPosY[i]);
- fHmpMipTrkDistNegY[i] = new TH1F(Form("fHmpMipTrkDistNegY%d",i),title.Data(),800,-20,20);
- fHmpHistList->Add(fHmpMipTrkDistNegY[i]);
-
- title=Form("Mip charge distribution, Chamber %d;Charge;Entries",i);
- fHmpMipCharge[i] = new TH1F(Form("fHmpMipCharge%d",i),title.Data(),5001,-0.5,5000.5);
- fHmpHistList->Add(fHmpMipCharge[i]);
-
- title=Form("Photons, Chamber %d;N of Photons;Entries",i);
- fHmpPhotons[i] = new TH1F(Form("fHmpPhotons%d",i),title.Data(),100,0,100);
- fHmpHistList->Add(fHmpPhotons[i]);
-
- title=Form("Photons versus HMP momentum, Chamber %d;P (GeV);N of Photons",i);
- fHmpPhotP[i] = new TH2F(Form("fHmpPhotP%d",i),title.Data(),200,0.,20.,100,0,100);
- fHmpHistList->Add(fHmpPhotP[i]);
-
- title=Form("Photons versus sin(th)^2 (uncorrected), Chamber %d;P (GeV);N of Photons",i);
- fHmpPhotSin2th[i] = new TH2F(Form("fHmpPhotSin2th%d",i),title.Data(),100,0.,1.,100,0,100);
- fHmpHistList->Add(fHmpPhotSin2th[i]);
- }
-
- fHmpMipCharge3cm = new TH1F("fHmpMipCharge3cm","HMPID MIP Charge;MIP Charge (ADC);Entries",5001,-0.5,5000.5);
- fHmpHistList->Add(fHmpMipCharge3cm);
-
- fHmpMipTrkDist = new TH1F("fHmpMipTrkDist","Mip-track distance in all the chambers",100,0.,10.);
- fHmpHistList->Add(fHmpMipTrkDist);
-
- fHmpTrkFlags = new TH1F("fHmpTrkFlags","HMPID track flags",6,0,6);
- TString summary[6] = {"NotPerformed","MipDistCut", "MipQdcCut", "NoPhotAccept", "kNoRad", "other"};
- for(Int_t ibin = 0; ibin < 6; ibin++) fHmpTrkFlags->GetXaxis()->SetBinLabel(ibin+1,Form("%i %s",ibin+1,summary[ibin].Data()));
- fHmpHistList->Add(fHmpTrkFlags);
-
- fPionEff = new TH1F("PionEff","Identified pions",fN1,0,fN1);
- fKaonEff = new TH1F("KaonEff","Identified kaons",fN1,0,fN1);
- fProtEff = new TH1F("ProtEff","Identified protons",fN2,0,fN2);
- fPionTot = new TH1I("PionTot","Total MC pions",fN1,0,fN1);
- fKaonTot = new TH1I("KaonTot","Total MC kaons",fN1,0,fN1);
- fProtTot = new TH1I("ProtTot","Total MC protons",fN2,0,fN2);
- fPionNot = new TH1F("PionNot","Misidentified pions",fN1,0,fN1);
- fKaonNot = new TH1F("KaonNot","Misidentified kaons",fN1,0,fN1);
- fProtNot = new TH1F("ProtNot","Misidentified protons",fN2,0,fN2);
- fPionCon = new TH1I("PionCon","Total not MC pions",fN1,0,fN1);
- fKaonCon = new TH1I("KaonCon","Total not MC kaons",fN1,0,fN1);
- fProtCon = new TH1I("ProtCon","Total not MC protons",fN2,0,fN2);
-
- fHmpHistList->Add(fPionEff); fHmpHistList->Add(fKaonEff); fHmpHistList->Add(fProtEff);
- fHmpHistList->Add(fPionTot); fHmpHistList->Add(fKaonTot); fHmpHistList->Add(fProtTot);
- fHmpHistList->Add(fPionNot); fHmpHistList->Add(fKaonNot); fHmpHistList->Add(fProtNot);
- fHmpHistList->Add(fPionCon); fHmpHistList->Add(fKaonCon); fHmpHistList->Add(fProtCon);
+ fHmpNevents = new TH1F("fHmpNevents","Number of events",2,0,2);
+ fHmpHistList->Add(fHmpNevents);
+ fZvertex = new TH1F("fZvertex","Z primary vertex distribution",4000,-20,20);
+ fHmpHistList->Add(fZvertex);
+
+// OpenFile(2);
+ fTree = new TTree("Tree","Tree with data");
+ fTree->Branch("Chamber",&fVar[0]);
+ fTree->Branch("pHmp3",&fVar[1]);
+ fTree->Branch("P",&fVar[2]);
+ fTree->Branch("Xpc",&fVar[3]);
+ fTree->Branch("Ypc",&fVar[4]);
+ fTree->Branch("X",&fVar[5]);
+ fTree->Branch("Y",&fVar[6]);
+ fTree->Branch("HMPIDsignal",&fVar[7]);
+ fTree->Branch("Charge",&fVar[8]);
+ fTree->Branch("Theta",&fVar[9]);
+ fTree->Branch("Phi",&fVar[10]);
+ fTree->Branch("Sign",&fVar[11]);
+ fTree->Branch("NumPhotons",&fVar[12]);
+ fTree->Branch("ClustSize",&fVar[13]);
+ fTree->Branch("Eta",&fVar[14]);
+ fTree->Branch("PhiTrack",&fVar[15]);
+ fTree->Branch("pHmpX",&fVar[16]);
+ fTree->Branch("pHmpY",&fVar[17]);
+ fTree->Branch("pHmpZ",&fVar[18]);
+ fTree->Branch("Px",&fVar[19]);
+ fTree->Branch("Py",&fVar[20]);
+ fTree->Branch("Pz",&fVar[21]);
+ fTree->Branch("HmpSigma",&fVar[22]);
+
PostData(1,fHmpHistList);
+ PostData(2,fTree);
}
//____________________________________________________________________________________________________________________________________