fReadAODData(0),
fCFManager(0x0),
fQAHistList(0x0),
- fHistEventsProcessed(0x0)
-{
+ fHistEventsProcessed(0x0) {
//
// Constructor. Initialization of Inputs and Outputs
//
}
//___________________________________________________________________________
-AliProtonCorrectionTask& AliProtonCorrectionTask::operator=(const AliProtonCorrectionTask& c)
-{
+AliProtonCorrectionTask& AliProtonCorrectionTask::operator=(const AliProtonCorrectionTask& c) {
//
// Assignment operator
//
fReadAODData(c.fReadAODData),
fCFManager(c.fCFManager),
fQAHistList(c.fQAHistList),
- fHistEventsProcessed(c.fHistEventsProcessed)
-{
+ fHistEventsProcessed(c.fHistEventsProcessed) {
//
// Copy Constructor
//
}
//_________________________________________________
-void AliProtonCorrectionTask::UserExec(Option_t *)
-{
+void AliProtonCorrectionTask::UserExec(Option_t *) {
//
// Main loop function
//
if (!fCFManager->CheckParticleCuts(AliCFManager::kPartAccCuts,mcPart)) continue;
//fill the container for Acceptance-level selection
fCFManager->GetParticleContainer()->Fill(containerInput,kStepReconstructible);
- }
+ }//loop over MC particles
- //Now go to rec level
+ //ESD track loop
for (Int_t iTrack = 0; iTrack<fEvent->GetNumberOfTracks(); iTrack++) {
-
track = fEvent->GetTrack(iTrack);
if (fReadTPCTracks) {
if (!fCFManager->CheckParticleCuts(AliCFManager::kPartRecCuts,track)) continue;
// is track associated to particle ?
-
Int_t label = track->GetLabel();
-
if (label<0) continue;
AliMCParticle *mcPart = fMCEvent->GetTrack(label);
if (!fCFManager->CheckParticleCuts(AliCFManager::kPartGenCuts,mcPart)) continue;
//fill the container
- Double_t mom[3];
- track->PxPyPz(mom);
- Double_t pt=TMath::Sqrt(mom[0]*mom[0]+mom[1]*mom[1]);
containerInput[0] = Rapidity(track->Px(),
track->Py(),
track->Pz());
//___________________________________________________________________________
-void AliProtonCorrectionTask::Terminate(Option_t*)
-{
+void AliProtonCorrectionTask::Terminate(Option_t*) {
// The Terminate() function is the last function to be called during
// a query. It always runs on the client, it can be used to present
// the results graphically or save the results to file.
TH1D* h12 = cont->ShowProjection(1,2) ;
TH1D* h13 = cont->ShowProjection(1,3) ;
- Double_t max1 = h00->GetMaximum();
- Double_t max2 = h10->GetMaximum();
+ //Double_t max1 = h00->GetMaximum();
+ //Double_t max2 = h10->GetMaximum();
/*h00->GetYaxis()->SetRangeUser(0,max1*1.2);
h01->GetYaxis()->SetRangeUser(0,max1*1.2);
//For the time being: y-pT
//Next step: add Vz
//Setting up the container grid...
+ //===============//
+ //Global tracking//
+ //===============//
const Double_t ymin = -1.0;
const Double_t ymax = 1.0;
+ const Int_t nbin1 = 20; //bins in y
const Double_t ptmin = 0.4;
const Double_t ptmax = 3.1;
- UInt_t iy = 0;
- UInt_t ipT = 1;
+ const Int_t nbin2 = 27; //bins in pT
+ //===============//
+ // TPC tracking //
+ //===============//
+ /*const Double_t ymin = -0.5;
+ const Double_t ymax = 0.5;
+ const Int_t nbin1 = 10; //bins in y
+ const Double_t ptmin = 0.4;
+ const Double_t ptmax = 0.9;
+ const Int_t nbin2 = 15;*/ //bins in pT
+
//Setting up the container grid...
UInt_t nstep = 4; //number of selection steps MC
+ UInt_t iy = 0;
+ UInt_t ipT = 1;
const Int_t nvar = 2; //number of variables on the grid:y-pT
- const Int_t nbin1 = 8; //bins in y
- const Int_t nbin2 = 8; //bins in pT
- //arrays for the number of bins in each dimension
+ //arrays for the number of bins in each dimension
Int_t iBin[nvar];
iBin[0]=nbin1;
iBin[1]=nbin2;
const Int_t mintrackrefsITS = 3;
const Int_t charge = 1;
const Int_t PDG = 2212;
+
const Int_t minclustersTPC = 50;
+ const Float_t maxChi2PerTPCCluster = 3.5;
+ const Float_t maxCov11 = 2.0;
+ const Float_t maxCov22 = 2.0;
+ const Float_t maxCov33 = 0.5;
+ const Float_t maxCov44 = 0.5;
+ const Float_t maxCov55 = 2.0;
+ const Float_t maxSigmaToVertexTPC = 2.5;
+
+ const Int_t minclustersITS = 5;
+ const Float_t maxSigmaToVertex = 2.5;
+
// Gen-Level kinematic cuts
AliCFTrackKineCuts *mcKineCuts = new AliCFTrackKineCuts("mcKineCuts","MC-level kinematic cuts");
mcKineCuts->SetPtRange(ptmin,ptmax);
AliCFTrackQualityCuts *recQualityCuts = new AliCFTrackQualityCuts("recQualityCuts","rec-level quality cuts");
recQualityCuts->SetMinNClusterTPC(minclustersTPC);
- recQualityCuts->SetRequireITSRefit(kTRUE);
+ recQualityCuts->SetMaxChi2PerClusterTPC(maxChi2PerTPCCluster);
+ recQualityCuts->SetMaxCovDiagonalElements(maxCov11,maxCov22,maxCov33,maxCov44,maxCov55);
+ recQualityCuts->SetRequireTPCRefit(kTRUE);
+
+ //recQualityCuts->SetRequireITSRefit(kTRUE);
recQualityCuts->SetQAOn(qaList);
AliCFTrackIsPrimaryCuts *recIsPrimaryCuts = new AliCFTrackIsPrimaryCuts("recIsPrimaryCuts","rec-level isPrimary cuts");
- recIsPrimaryCuts->SetMaxNSigmaToVertex(3);
+ recIsPrimaryCuts->SetMaxNSigmaToVertex(maxSigmaToVertex);
recIsPrimaryCuts->SetQAOn(qaList);
AliCFTrackCutPid* cutPID = new AliCFTrackCutPid("cutPID","ESD_PID");
cutPID->SetPriors(prior);
cutPID->SetProbabilityCut(0.0);
cutPID->SetDetectors("ITS TPC TOF");
- switch(TMath::Abs(PDG)) {
- case 11 : cutPID->SetParticleType(AliPID::kElectron, kTRUE); break;
- case 13 : cutPID->SetParticleType(AliPID::kMuon , kTRUE); break;
- case 211 : cutPID->SetParticleType(AliPID::kPion , kTRUE); break;
- case 321 : cutPID->SetParticleType(AliPID::kKaon , kTRUE); break;
- case 2212 : cutPID->SetParticleType(AliPID::kProton , kTRUE); break;
- default : printf("UNDEFINED PID\n"); break;
- }
+ cutPID->SetParticleType(AliPID::kProton , kTRUE);
cutPID->SetQAOn(qaList);
//________________________________________//