// c++ headers
#include <iostream>
#include <string.h>
+#include <bitset>
// root headers
#include "TH1I.h"
//input event
AliAODEvent *aod = (AliAODEvent*) InputEvent();
if(!aod) return;
- //cout<<"File: "<<(aod->GetHeader()->GetESDFileName()).Data()<<" Event: "<<aod->GetHeader()->GetEventNumberESDFile()<<endl;
-
+
//Trigger
TString trigger = aod->GetFiredTriggerClasses();
- if( !trigger.Contains("CCUP4-B") ) return;
+ if( !trigger.Contains("CCUP") ) return;
fRunNum = aod ->GetRunNumber();
fHistTriggersPerRun->Fill(fRunNum);
-
//primary vertex
AliAODVertex *fAODVertex = aod->GetPrimaryVertex();
fVtxContrib = fAODVertex->GetNContributors();
if ( pTrack->Charge() == nTrack->Charge())continue;
+ if(!(pTrack->TestFilterBit(1<<0))) continue;
+ if(!(nTrack->TestFilterBit(1<<0))) continue;
if(!(pTrack->GetStatus() & AliESDtrack::kITSrefit) ) continue;
if(!(nTrack->GetStatus() & AliESDtrack::kITSrefit) ) continue;
if(!(pTrack->GetStatus() & AliESDtrack::kTPCrefit) ) continue;
V0Index[nGoodV0s] = iV0;
V0TrackID[2*nGoodV0s] = pTrack->GetID();
V0TrackID[2*nGoodV0s+1] = nTrack->GetID();
+
nGoodV0s++;
if(nGoodV0s > 2) break;
}//V0s loop
for(Int_t itr=0; itr<aod ->GetNumberOfTracks(); itr++) {
AliAODTrack *trk = aod->GetTrack(itr);
if( !trk ) continue;
+ if(!(trk->TestFilterBit(1<<0))) continue;
if(!(trk->GetStatus() & AliESDtrack::kTPCrefit) ) continue;
if(!(trk->GetStatus() & AliESDtrack::kITSrefit) ) continue;
}//Track loop
if(nGoodV0s == 2 && nGoodTracks == 4){
- //SortArray(TrackID);
- //SortArray(V0TrackID);
- //for(Int_t i=0; i<4; i++) if (TrackID[i] != V0TrackID[i]) return;
+ SortArray(TrackID);
+ SortArray(V0TrackID);
+ for(Int_t i=0; i<4; i++) if (TrackID[i] != V0TrackID[i]) return;
+
AliAODv0 *v00 = aod->GetV0(V0Index[0]);
AliAODv0 *v01 = aod->GetV0(V0Index[1]);
fHistK0sMass->Fill(v00->MassK0Short(),v01->MassK0Short());
fDataFilnam = aod->GetHeader()->GetESDFileName();
fEvtNum = aod->GetHeader()->GetEventNumberESDFile();
fRunNum = aod->GetRunNumber();
+
+ //Trigger
//Trigger
TString trigger = aod->GetFiredTriggerClasses();
- if( !trigger.Contains("CCUP4-B") ) return;
+ fTrigger[0] = trigger.Contains("CCUP4-B"); // Central UPC Pb-Pb 2011
+ fTrigger[1] = trigger.Contains("CCUP2-B"); // Double gap
+ fTrigger[2] = trigger.Contains("CCUP7-B"); // Central UPC p-Pb 2013
+
+ Bool_t isTriggered = kFALSE;
+ for(Int_t i=0; i<ntrg; i++) {
+ if( fTrigger[i] ) isTriggered = kTRUE;
+ }
+ if(!isTriggered ) return;
//trigger inputs
fL0inputs = aod->GetHeader()->GetL0TriggerInputs();
if ( pTrack->Charge() == nTrack->Charge())continue;
+ if(!(pTrack->TestFilterBit(1<<0))) continue;
+ if(!(nTrack->TestFilterBit(1<<0))) continue;
if(!(pTrack->GetStatus() & AliESDtrack::kTPCrefit) ) continue;
if(!(nTrack->GetStatus() & AliESDtrack::kTPCrefit) ) continue;
if(!(pTrack->GetStatus() & AliESDtrack::kITSrefit) ) continue;
for(Int_t itr=0; itr<aod ->GetNumberOfTracks(); itr++) {
AliAODTrack *trk = aod->GetTrack(itr);
if( !trk ) continue;
+ if(!(trk->TestFilterBit(1<<0))) continue;
if(!(trk->GetStatus() & AliESDtrack::kTPCrefit) ) continue;
if(!(trk->GetStatus() & AliESDtrack::kITSrefit) ) continue;
}//RunAOD
//_____________________________________________________________________________
-void AliAnalysisTaskUpcK0sK0s::SortArray(Double_t *dArray) {
+void AliAnalysisTaskUpcK0sK0s::SortArray(Int_t *dArray) {
for (Int_t i = 3; i > 0; --i) {
for (Int_t j = 0; j < i; ++j) {
if (dArray[j] > dArray[j+1]) {
- Double_t dTemp = dArray[j];
+ Int_t dTemp = dArray[j];
dArray[j] = dArray[j+1];
dArray[j+1] = dTemp;
}
cout<<"Analysis complete."<<endl;
}//Terminate
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-