fEtaCutSeed(0.9),
fSelectParticles(1),
fSelectParticlesAssoc(1),
+ fCheckSDD(true),
+ fSelOption(1),
fESDEvent(0),
fAODEvent(0),
fNMcPrimAccept(0),
}
fChargedPi0 = new TH2F("fChargedPi0", "fChargedPi0", 200, -0.5, 199.5, 200, -0.5, 199.5);
- fVertexCheck = new TH1F("fVertexCheck", "fVertexCheck", 4, -0.5, 3.5);
+ fVertexCheck = new TH1F("fVertexCheck", "fVertexCheck", 100, -0.5, 99.5);
//----------------------
Double_t ptMin = 0.0, ptMax = 100.;
Int_t nPtBins = 39;
Double_t binsPt[] = {0.0, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.6, 0.7, 0.8,
- 0.9, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 6.0, 7.0, 8.0, 9.0,
- 10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 100.0};
+ 0.9, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 6.0, 7.0, 8.0, 9.0,
+ 10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 100.0};
- // Int_t nPtBins = 100;
- // Double_t ptMin = 1.e-2, ptMax = 100.;
- // Double_t *binsPt = 0;
- // binsPt = CreateLogAxis(nPtBins,ptMin,ptMax);
+ //Int_t nPtBinsAll = 100;
+ //Double_t ptMinAll = 1.e-2, ptMaxAll = 100.;
+ //Double_t *binsPtAll = 0;
+ //binsPtAll = (Double_t*)CreateLogAxis(nPtBinsAll,ptMinAll,ptMaxAll);
Double_t ptMin2 = 0.0, ptMax2 = 100.;
if(!fAODEvent && !fESDEvent)return;
- //=================== AOD ===============
+ // SDD check for LHC11a
+ if (fCheckSDD) {
-
+ //ESD
+ if(fESDEvent){
+ if(fSelOption==0){
+ const AliMultiplicity *mul = fESDEvent->GetMultiplicity();
+ Int_t nClu3 = mul->GetNumberOfITSClusters(2);
+ Int_t nClu4 = mul->GetNumberOfITSClusters(3);
+ if(nClu3==0 && nClu4==0) return;
+ }
+ else if (fSelOption==1){
+ TString trcl = fESDEvent->GetFiredTriggerClasses().Data();
+ if (!(trcl.Contains("CINT1-B-NOPF-ALLNOTRD"))) return;
+ }
+ }
+ //AOD
+ if(fAODEvent){
+ if(fSelOption==0){
+ Bool_t useEvent = false;
+ Int_t nTracks = fAODEvent->GetNTracks();
+ for(Int_t itrack=0; itrack<nTracks; itrack++) {
+ AliAODTrack * track = fAODEvent->GetTrack(itrack);
+ if(TESTBIT(track->GetITSClusterMap(),2) || TESTBIT(track->GetITSClusterMap(),3) ){
+ useEvent=true;
+ break;
+ }
+ }
+ if (!useEvent) return;
+ }
+ else if(fSelOption==1){
+ TString trcl = fAODEvent->GetFiredTriggerClasses().Data();
+ if (!(trcl.Contains("CINT1-B-NOPF-ALLNOTRD"))) return;
+ }
+ }
+ }
//reset values
fNMcPrimAccept=0;// number of accepted primaries
(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))
->IsEventSelected() & fTriggerType);
-
+
if(fDebug){
Printf("IsSelected = %d", isSelected);
Printf("CheckEvent(true)= %d", CheckEvent(true));
nAcceptedTracks++;
//save track properties in vector
- if(vtrack->GetLabel()<0){ //fake tracks
+ if(vtrack->GetLabel()<0){ //fake tracks before "label<0", but crash in AOD079 // what is the meaning of label 0
// Printf("Fake track");
// continue;
ptArray.push_back(track->Pt());
}
else{//mc properties
AliAODMCParticle *partOfTrack = (AliAODMCParticle*)mcArray->At(vtrack->GetLabel());
-
- ptArray.push_back(partOfTrack->Pt());
- etaArray.push_back(partOfTrack->Eta());
- phiArray.push_back(partOfTrack->Phi());
- chargeArray.push_back(vtrack->Charge());//partOfTrack?
+ if(!partOfTrack) Printf("label=%d", vtrack->GetLabel());
+ if(partOfTrack){
+ ptArray.push_back(partOfTrack->Pt());
+ etaArray.push_back(partOfTrack->Eta());
+ phiArray.push_back(partOfTrack->Phi());
+ chargeArray.push_back(vtrack->Charge());//partOfTrack?
+ }
}
-
}
}
//need to check this option for MC
//rec vertex
const AliESDVertex* vertexESDg = fESDEvent->GetPrimaryVertex(); // uses track or SPD vertexer
if(!vertexESDg) return false;
+ fVertexCheck->Fill(vertexESDg->GetNContributors());
if(vertexESDg->GetNContributors()<=0)return false;
Float_t fVzg= vertexESDg->GetZ();
if(TMath::Abs(fVzg)>fVertexZCut) return false;
if(vtxSPD->GetNContributors()<=0)return false;
Float_t fVzSPD= vtxSPD->GetZ();
if(TMath::Abs(fVzSPD)>fVertexZCut) return false;
-
+
}
return true;
}
AliAODVertex* vertex= (AliAODVertex*)fAODEvent->GetPrimaryVertex();
if(!vertex) return false;
+ fVertexCheck->Fill(vertex->GetNContributors());
if(vertex->GetNContributors()<=0) return false;
Double_t vzAOD=vertex->GetZ();
- if(TMath::Abs(vzAOD)<1e-9) return false;
+ // if(TMath::Abs(vzAOD)<1e-9) return false;
if(TMath::Abs(vzAOD)>fVertexZCut) return false;
AliAODVertex* vertexSPD= (AliAODVertex*)fAODEvent->GetPrimaryVertexSPD();
void SetMaxEtaSeed(Float_t etaCutSeed) {fEtaCutSeed = etaCutSeed;}\r
void SetSelectParticles(Int_t selectParticles) {fSelectParticles = selectParticles;}\r
void SetSelectParticlesAssoc(Int_t selectParticlesAssoc) {fSelectParticlesAssoc = selectParticlesAssoc;}\r
+ void SetCheckSDD (Bool_t checkSDD, Int_t selOption) {fCheckSDD = checkSDD; fSelOption = selOption;}\r
\r
\r
private:\r
Float_t fEtaCutSeed; // eta acceptance cut for seed\r
Int_t fSelectParticles; // only in cas of MC: use also neutral particles or not \r
Int_t fSelectParticlesAssoc; // only in cas of MC: use also neutral particles or not \r
+ Bool_t fCheckSDD; // check if SDD was in read out partition (needed for LHC11a)\r
+ Int_t fSelOption; // 0 = use hit in SDD for event selection, 1 = use trigger for event selection\r
\r
AliESDEvent *fESDEvent; //! esd event\r
AliAODEvent *fAODEvent; //! aod event\r
Float_t fVzEvent; // global variable for rec vertex position\r
Double_t fMeanPtRec; // global variable for rec mean pt\r
Double_t fLeadingPtRec; // global variable for rec mean pt\r
- \r
+\r
TList *fHists; // output list\r
TH1F *fStep; // how many events have passed which correction step\r
TH1F *fHistPt; // Pt spectrum ESD\r
TProfile * fPNch07Tracklet[6]; // nCharged with pT>fTriggerPtCut vs nTracklet\r
\r
TH1F * fDPhiEventAxis[6]; // delta phi of associate tracks to event axis\r
- \r
+ \r
AliAnalysisTaskMinijet(const AliAnalysisTaskMinijet&); // not implemented\r
AliAnalysisTaskMinijet& operator=(const AliAnalysisTaskMinijet&); // not implemented\r
\r
Float_t ptTrigMin = 0.7,
Float_t ptAssocMin = 0.4,
Float_t maxVtxZ = 10.,
- Int_t filterBit = 128,
+ Int_t filterBit = 96,
Int_t debugLevel = 0,
Float_t maxEta = 0.9,
Float_t ptMin = 0.2,
- Float_t ptMax = 50.0)
+ Float_t ptMax = 50.0,
+ Bool_t checkSDD = false,
+ Int_t checkOption = 1,
+ Bool_t onlyPrim = false)
{
- // Get the pointer to the existing analysis manager via the static access method.
+ // Get the pointer to the existing analysis manager via the static access method
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) mgr = new AliAnalysisManager("Analysis train");
taskMB->SetTriggerMask(AliVEvent::kMB);
// taskMB->SelectCollisionCandidates(AliVEvent::kMB);//MB //now inside task
taskMB->SetFilterBit(filterBit); // used only in AOD case
+ taskMB->SetCheckSDD(checkSDD, checkOption);
taskMB->SetDebugLevel(debugLevel);
+
+ //use this only for correction map plots -> Split contmaintion and rec efficiency
+ taskMB->SetAnalyseOnlyPrimaries(onlyPrim);
if(!format.CompareTo("esd")){
taskMB->SetCuts(esdTrackCutsTPC);
taskHM->SetUseMC(useMC, mcOnly);
taskHM->SetTriggerPtCut(ptTrigMin);
taskHM->SetAssociatePtCut(ptAssocMin);
- taskMB->SetMaxEta(maxEta);
- taskMB->SetPtRange(ptMin, ptMax);
+ taskHM->SetMaxEta(maxEta);
+ taskHM->SetPtRange(ptMin, ptMax);
taskHM->SetMaxVertexZ(maxVtxZ);
taskHM->SetTriggerMask(AliVEvent::kHighMult);
//taskHM->SelectCollisionCandidates(AliVEvent::kHighMult); // now inside task
- taskMB->SetFilterBit(filterBit); // used only in AOD case
+ taskHM->SetFilterBit(filterBit); // used only in AOD case
+ taskHM->SetCheckSDD(checkSDD, checkOption);
taskHM->SetDebugLevel(debugLevel);
if(!format.CompareTo("esd")){