\r
#include "AlidNdPtEventCuts.h"\r
#include "AlidNdPtAcceptanceCuts.h"\r
+#include "AliPhysicsSelection.h"\r
\r
#include "AliPWG0Helper.h"\r
#include "AlidNdPtHelper.h"\r
\r
//\r
Double_t kFact = 1.0;\r
- if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx) kFact = 0.05; \r
+ if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || \r
+ GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtxUpdate) kFact = 0.03; \r
\r
Int_t binsRecMCEventHist1[3]={100,100,100};\r
Double_t minRecMCEventHist1[3]={-10.0*kFact,-10.0*kFact,-10.0*kFact}; \r
return;\r
}\r
\r
+ // get physics trigger selection \r
+ AliPhysicsSelection *trigSel = GetPhysicsTriggerSelection();\r
+ if(!trigSel) {\r
+ AliDebug(AliLog::kError, "cannot get trigSel");\r
+ return;\r
+ }\r
+\r
// trigger selection\r
Bool_t isEventTriggered = kTRUE;\r
if(evtCuts->IsTriggerRequired()) {\r
if(IsUseMCInfo()) { \r
- static AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;\r
- isEventTriggered = triggerAnalysis->IsTriggerFired(esdEvent, GetTrigger());\r
+ //static AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;\r
+ //isEventTriggered = triggerAnalysis->IsTriggerFired(esdEvent, GetTrigger());\r
+ trigSel->SetAnalyzeMC();\r
+ isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
}\r
else {\r
- isEventTriggered = esdEvent->IsTriggerClassFired(GetTriggerClass());\r
+ //isEventTriggered = esdEvent->IsTriggerClassFired(GetTriggerClass());\r
+ isEventTriggered = trigSel->IsCollisionCandidate(esdEvent);\r
}\r
}\r
\r
vtxESD = AlidNdPtHelper::GetVertex(esdEvent,evtCuts,accCuts,esdTrackCuts,GetAnalysisMode(),kFALSE,bRedoTPCVertex,bUseConstraints); \r
isRecVertex = AlidNdPtHelper::TestRecVertex(vtxESD, GetAnalysisMode(), kFALSE);\r
}\r
+\r
if( IsUseMCInfo() && !evtCuts->IsRecVertexRequired() ) {\r
vtxESD = new AliESDVertex(vtxMC[2],10.,genHeader->NProduced(),"smearMC");\r
isRecVertex = kTRUE;\r
}\r
+\r
Bool_t isEventOK = evtCuts->AcceptEvent(esdEvent,mcEvent,vtxESD) && isRecVertex; \r
//printf("isEventOK %d, isEventTriggered %d \n",isEventOK, isEventTriggered);\r
+ //printf("GetAnalysisMode() %d \n",GetAnalysisMode());\r
\r
- // MB bias tracks\r
+ // vertex contributors\r
Int_t multMBTracks = 0; \r
- if(GetAnalysisMode() == AlidNdPtHelper::kTPC || GetAnalysisMode() == AlidNdPtHelper::kMCPion || \r
- GetAnalysisMode() == AlidNdPtHelper::kMCKaon || GetAnalysisMode() == AlidNdPtHelper::kMCProton || \r
- GetAnalysisMode() ==AlidNdPtHelper::kPlus || GetAnalysisMode() ==AlidNdPtHelper::kMinus) { \r
-\r
+ if(GetAnalysisMode() == AlidNdPtHelper::kTPC) \r
+ { \r
multMBTracks = AlidNdPtHelper::GetTPCMBTrackMult(esdEvent,evtCuts,accCuts,esdTrackCuts);\r
} \r
- else if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || GetAnalysisMode() == AlidNdPtHelper::kMCPion || \r
- GetAnalysisMode() == AlidNdPtHelper::kMCKaon || GetAnalysisMode() == AlidNdPtHelper::kMCProton || \r
- GetAnalysisMode() ==AlidNdPtHelper::kPlus || GetAnalysisMode() == AlidNdPtHelper::kMinus) {\r
-\r
- multMBTracks = AlidNdPtHelper::GetSPDMBTrackMult(esdEvent,0.0);\r
+ else if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtx || GetAnalysisMode()==AlidNdPtHelper::kTPCSPDvtxUpdate) \r
+ {\r
+ //multMBTracks = AlidNdPtHelper::GetSPDMBTrackMult(esdEvent,0.0);\r
+ if(vtxESD->GetStatus())\r
+ multMBTracks = vtxESD->GetNContributors();\r
} \r
else {\r
AliDebug(AliLog::kError, Form("Found analysis type %s", GetAnalysisMode()));\r
if(!allChargedTracks) return;\r
\r
Int_t entries = allChargedTracks->GetEntries();\r
+ //printf("entries %d \n",entries);\r
+\r
labelsAll = new Int_t[entries];\r
labelsAcc = new Int_t[entries];\r
labelsRec = new Int_t[entries];\r
AliESDtrack *track = (AliESDtrack*)allChargedTracks->At(i);\r
if(!track) continue;\r
if(track->Charge()==0) continue;\r
- \r
- FillHistograms(track,stack,AlidNdPtHelper::kAllTracks); \r
- labelsAll[multAll] = TMath::Abs(track->GetLabel());\r
- multAll++;\r
-\r
- if(accCuts->AcceptTrack(track)) {\r
- FillHistograms(track,stack,AlidNdPtHelper::kAccTracks); \r
- labelsAcc[multAcc] = TMath::Abs(track->GetLabel());\r
- multAcc++;\r
-\r
- if(esdTrackCuts->AcceptTrack(track)) {\r
- FillHistograms(track,stack,AlidNdPtHelper::kRecTracks); \r
- labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
- multRec++;\r
+\r
+ /*\r
+ // cosmics analysis\r
+ if( GetParticleMode()==AlidNdPtHelper::kCosmics && \r
+ AlidNdPtHelper::IsCosmicTrack(allChargedTracks, track, i, accCuts, esdTrackCuts)==kFALSE ) \r
+ continue;\r
+ */\r
+\r
+ // only postive charged \r
+ if(GetParticleMode() == AlidNdPtHelper::kPlus && track->Charge() < 0) \r
+ continue;\r
+ \r
+ // only negative charged \r
+ if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) \r
+ continue;\r
+\r
+ FillHistograms(track,stack,AlidNdPtHelper::kAllTracks); \r
+ labelsAll[multAll] = TMath::Abs(track->GetLabel());\r
+ multAll++;\r
+\r
+ //if(accCuts->AcceptTrack(track)) {\r
+ //FillHistograms(track,stack,AlidNdPtHelper::kAccTracks); \r
+ //labelsAcc[multAcc] = TMath::Abs(track->GetLabel());\r
+ //multAcc++;\r
+\r
+ if(esdTrackCuts->AcceptTrack(track)) \r
+ {\r
+ if(GetAnalysisMode() == AlidNdPtHelper::kTPCSPDvtxUpdate) {\r
+ // update track parameters\r
+ AliExternalTrackParam cParam;\r
+ track->RelateToVertexTPC(esdEvent->GetPrimaryVertexSPD(),esdEvent->GetMagneticField(),kVeryBig,&cParam);\r
+ track->Set(cParam.GetX(),cParam.GetAlpha(),cParam.GetParameter(),cParam.GetCovariance());\r
+\r
+ if(accCuts->AcceptTrack(track)) {\r
+ FillHistograms(track,stack,AlidNdPtHelper::kRecTracks); \r
+ labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
+ multRec++;\r
+ } \r
+ }\r
+ else {\r
+ if(accCuts->AcceptTrack(track)) {\r
+ FillHistograms(track,stack,AlidNdPtHelper::kRecTracks); \r
+ labelsRec[multRec] = TMath::Abs(track->GetLabel());\r
+ multRec++;\r
+ }\r
+ }\r
}\r
- }\r
+ //}\r
} \r
// fill track multiplicity histograms\r
FillHistograms(allChargedTracks,labelsAll,multAll,labelsAcc,multAcc,labelsRec,multRec);\r
continue;\r
\r
// only postive charged \r
- if(GetAnalysisMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
+ if(GetParticleMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
continue;\r
\r
// only negative charged \r
- if(GetAnalysisMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
+ if(GetParticleMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
continue;\r
\r
// physical primary\r
\r
// all genertated primaries including neutral\r
if( iMc < stack->GetNprimary() ) {\r
- fGenTrackMatrix->Fill(vTrackMatrix);\r
+ //fGenTrackMatrix->Fill(vTrackMatrix);\r
}\r
\r
// only charged particles\r
continue;\r
\r
// only postive charged \r
- if(GetAnalysisMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
+ if(GetParticleMode() == AlidNdPtHelper::kPlus && charge < 0.) \r
continue;\r
\r
// only negative charged \r
- if(GetAnalysisMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
+ if(GetParticleMode() == AlidNdPtHelper::kMinus && charge > 0.) \r
continue;\r
\r
// physical primary\r
if(accCuts->AcceptTrack(particle)) \r
{\r
\r
- if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetAnalysisMode()) ) fGenPrimTrackMatrix->Fill(vTrackMatrix);\r
+ if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) fGenPrimTrackMatrix->Fill(vTrackMatrix);\r
\r
// fill control histograms\r
if(fHistogramsOn) \r
if(iMc == labelsRec[iRec]) \r
{\r
fRecTrackMatrix->Fill(vTrackMatrix);\r
- if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetAnalysisMode()) ) fRecPrimTrackMatrix->Fill(vTrackMatrix);\r
+ if( AlidNdPtHelper::IsPrimaryParticle(stack, iMc, GetParticleMode()) ) fRecPrimTrackMatrix->Fill(vTrackMatrix);\r
if(!prim) fRecSecTrackMatrix->Fill(vTrackMatrix);\r
\r
// fill control histograms\r
//Float_t gphi = particle->Phi();\r
\r
Double_t dpt=0;\r
+ //printf("pt %f, gpt %f \n",pt,gpt);\r
if(gpt) dpt = (pt-gpt)/gpt;\r
Double_t deta = (eta-geta);\r
\r
aFolderObj->Add(h);\r
\r
// efficiency\r
+\r
h = AlidNdPtHelper::GenerateCorrMatrix(fRecPrimTrackMatrix->Projection(1), fGenPrimTrackMatrix->Projection(1),"pt_track_eff_matrix");\r
aFolderObj->Add(h);\r
\r
h = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(0),fRecTrackMatrix->Projection(0),"zv_track_cont_matrix");\r
aFolderObj->Add(h);\r
\r
+\r
h = AlidNdPtHelper::GenerateCorrMatrix(fRecSecTrackMatrix->Projection(1),fRecTrackMatrix->Projection(1),"pt_track_cont_matrix");\r
aFolderObj->Add(h);\r
\r
c->cd();\r
\r
//\r
- fRecMCTrackHist1->GetAxis(1)->SetRangeUser(-0.9,0.89); \r
+ fRecMCTrackHist1->GetAxis(1)->SetRangeUser(-0.8,0.79); \r
\r
h2F = (TH2F*)fRecMCTrackHist1->Projection(2,0);\r
h = AlidNdPtHelper::MakeResol(h2F,1,0,kTRUE,10);\r