fChargedPi0(0),
fVertexCheck(0),
fPropagateDca(0),
- fCentralityMethod("V0M")
+ fCentralityMethod("")
{
//Constructor
// Called once
if(fDebug) Printf("In User Create Output Objects.");
- Int_t nbinsCentr = 101;
- Float_t minbinCentr=-0.5, maxbinCentr=100.5;
+ Int_t nbinsCentr = 0;
+ Float_t minbinCentr=0, maxbinCentr=0;
+
+ if (fCentralityMethod.Length() > 0)
+ {
+ nbinsCentr = 105;
+ minbinCentr=0;
+ maxbinCentr=105;
+ }
+ else
+ {
+ nbinsCentr = 101;
+ minbinCentr=-0.5;
+ maxbinCentr=100.5;
+ }
fStep = new TH1F("fStep", "fStep", 10, -0.5, 9.5);
fEventStat = new TH1F("fEventStat", "fEventStat", 10, -0.5, 9.5);
//number of accepted tracks and tracklets
- Int_t ntracks = 0; //return value for reading functions for ESD and AOD
+ Double_t ntracks = 0; //return value for reading functions for ESD and AOD
//Int_t ntracksRemove = 0; //return value for reading functions for ESD and AOD
- vector<Int_t> nTracksTracklets; // [0]=nAccepted,1=ntracklets,2=nall(also neutral in case of mc,
+ vector<Double_t> nTracksTracklets; // [0]=nAccepted,1=ntracklets,2=nall(also neutral in case of mc,
//for real nall=ncharged)
if(!fAODEvent && !fESDEvent)return;
else AliInfo("Fatal Error");
if (fCentralityMethod.Length() > 0)
- ntracks = TMath::Nint(centrality);
+ ntracks = centrality;
// analyse
if(pt.size()){ //(internally ntracks=fNRecAccept)
else if(fAODEvent)ntracks = ReadEventAOD(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 7);
else AliInfo("Fatal Error");
+ if (fCentralityMethod.Length() > 0)
+ ntracks = centrality;
+
// analyse
if(pt.size()){ //(internally ntracks=fNRecAccept)
- Analyse(pt, eta, phi, charge, strangenessWeight, TMath::Nint(fNRecAcceptStrangeCorr), nTracksTracklets[1], nTracksTracklets[2], 7);//step 7 = TrigVtxRecNrecStrangeCorr
+ Analyse(pt, eta, phi, charge, strangenessWeight, fNRecAcceptStrangeCorr, nTracksTracklets[1], nTracksTracklets[2], 7);//step 7 = TrigVtxRecNrecStrangeCorr
}
}
else if(fAODEvent) ntracks = ReadEventAODRecMcProp(pt, eta, phi, charge,strangenessWeight, nTracksTracklets, 4);
else AliInfo("Fatal Error");
+ if (fCentralityMethod.Length() > 0)
+ ntracks = centrality;
+
//analyse
if(pt.size()){//(internally ntracks=fNRecAccept)
Analyse(pt, eta, phi, charge,strangenessWeight, ntracks, nTracksTracklets[1], nTracksTracklets[2], 4); //step 4 = TrigVtxRecMcPropNrec
else if(fAODEvent) ntracks = ReadEventAODRecMcProp(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 6);
else AliInfo("Fatal Error");
+ if (fCentralityMethod.Length() > 0)
+ ntracks = centrality;
+
//analyse
if(pt.size()){//(internally ntracks=fNRecAccept)
- Analyse(pt, eta, phi, charge, strangenessWeight, TMath::Nint(fNRecAcceptStrangeCorr), nTracksTracklets[1], nTracksTracklets[2], 6); //step 6 = TrigVtxRecMcPropNrecStrangeCorr
+ Analyse(pt, eta, phi, charge, strangenessWeight, fNRecAcceptStrangeCorr, nTracksTracklets[1], nTracksTracklets[2], 6); //step 6 = TrigVtxRecMcPropNrecStrangeCorr
}
}
// step 3 = TrigVtxMcNrec
else if(fAODEvent) ntracks = ReadEventAODMC(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 3);
else AliInfo("Fatal Error");
+ if (fCentralityMethod.Length() > 0){
+ fNRecAccept = centrality;
+ fNMcPrimAccept = centrality;
+ }
+
// analyse
if(pt.size()){
Analyse(pt, eta, phi, charge, strangenessWeight, fNRecAccept, nTracksTracklets[1],nTracksTracklets[2], 3); //step 3 = TrigVtxMcNrec
else if(fAODEvent) ntracks = ReadEventAODMC(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 1);//read tracks
else AliInfo("Fatal Error");
+ if (fCentralityMethod.Length() > 0)
+ fNMcPrimAccept = centrality;
+
+
// analyse
if(pt.size()){
Analyse(pt, eta, phi, charge, strangenessWeight, fNMcPrimAccept, nTracksTracklets[1],nTracksTracklets[2], 1); // step 1 = TrigAllMcNmc
else if(fAODEvent) ntracks = ReadEventAODMC(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 0);
else AliInfo("Fatal Error");
+ if (fCentralityMethod.Length() > 0)
+ fNMcPrimAccept = centrality;
+
//analyse
if(pt.size()){
Analyse(pt, eta, phi, charge, strangenessWeight, fNMcPrimAccept, nTracksTracklets[1],nTracksTracklets[2], 0); //second part of step 0 // step 0 = AllAllMcNmc
if(fMode==0) ntracks = ReadEventESDMC(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 0);
else if (fMode==1) ntracks = ReadEventAODMC(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 0);
+ if (fCentralityMethod.Length() > 0)
+ fNMcPrimAccept = centrality;
+
// analyse
if(pt.size()){
Analyse(pt, eta, phi, charge, strangenessWeight, fNMcPrimAccept, nTracksTracklets[1],nTracksTracklets[2], 0);
//________________________________________________________________________
-Int_t AliAnalysisTaskMinijet::ReadEventESD( vector<Float_t> &ptArray, vector<Float_t> &etaArray,
+Double_t AliAnalysisTaskMinijet::ReadEventESD( vector<Float_t> &ptArray, vector<Float_t> &etaArray,
vector<Float_t> &phiArray, vector<Short_t> &chargeArray,
vector<Float_t> &strangeArray,
- vector<Int_t> &nTracksTracklets, const Int_t step)
+ vector<Double_t> &nTracksTracklets, const Int_t step)
{
// gives back the number of esd tracks and pointer to arrays with track
// properties (pt, eta, phi)
//first loop to check how many tracks are accepted
//------------------
- Int_t nAcceptedTracks=0;
+ Double_t nAcceptedTracks=0;
//Float_t nAcceptedTracksStrange=0;
for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) {
}
//________________________________________________________________________
-Int_t AliAnalysisTaskMinijet::ReadEventESDRecMcProp( vector<Float_t> &ptArray, vector<Float_t> &etaArray,
+Double_t AliAnalysisTaskMinijet::ReadEventESDRecMcProp( vector<Float_t> &ptArray, vector<Float_t> &etaArray,
vector<Float_t> &phiArray, vector<Short_t> &chargeArray,
vector<Float_t> &strangeArray,
- vector<Int_t> &nTracksTracklets, const Int_t step)
+ vector<Double_t> &nTracksTracklets, const Int_t step)
{
// gives back the number of esd tracks and pointer to arrays with track
// properties (pt, eta, phi) of mc particles if available
fVertexZ[step]->Fill(vtxSPD->GetZ());
//track loop
- Int_t nAcceptedTracks=0;
+ Double_t nAcceptedTracks=0;
for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) {
AliVParticle *vtrack = fESDEvent->GetTrack(iTracks);
//________________________________________________________________________
-Int_t AliAnalysisTaskMinijet::ReadEventESDMC(vector<Float_t> &ptArray, vector<Float_t> &etaArray,
+Double_t AliAnalysisTaskMinijet::ReadEventESDMC(vector<Float_t> &ptArray, vector<Float_t> &etaArray,
vector<Float_t> &phiArray, vector<Short_t> &chargeArray,
vector<Float_t> &strangeArray,
- vector<Int_t> &nTracksTracklets, const Int_t step)
+ vector<Double_t> &nTracksTracklets, const Int_t step)
{
// gives back the number of charged prim MC particle and pointer to arrays
// with particle properties (pt, eta, phi)
//----------------------------------
//first track loop to check how many chared primary tracks are available
- Int_t nChargedPrimaries=0;
- Int_t nAllPrimaries=0;
+ Double_t nChargedPrimaries=0;
+ Double_t nAllPrimaries=0;
- Int_t nPseudoTracklets=0;
+ Double_t nPseudoTracklets=0;
for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) {
AliMCParticle *track = dynamic_cast<AliMCParticle*>(mcEvent->GetTrack(iTracks));
if (!track) {
//----------------------------------
if(fDebug>2){
- Printf("All in acceptance=%d",nAllPrimaries);
- Printf("Charged in acceptance =%d",nChargedPrimaries);
+ Printf("All in acceptance=%f",nAllPrimaries);
+ Printf("Charged in acceptance =%f",nChargedPrimaries);
}
fChargedPi0->Fill(nAllPrimaries,nChargedPrimaries);
}
//________________________________________________________________________
-Int_t AliAnalysisTaskMinijet::ReadEventAOD( vector<Float_t> &ptArray, vector<Float_t> &etaArray,
+Double_t AliAnalysisTaskMinijet::ReadEventAOD( vector<Float_t> &ptArray, vector<Float_t> &etaArray,
vector<Float_t> &phiArray, vector<Short_t> &chargeArray,
vector<Float_t> &strangeArray,
- vector<Int_t> &nTracksTracklets, const Int_t step)
+ vector<Double_t> &nTracksTracklets, const Int_t step)
{
// gives back the number of AOD tracks and pointer to arrays with track
// properties (pt, eta, phi)
if(fDebug>1) Printf("AOD tracks: %d", ntracks);
- Int_t nAcceptedTracks=0;
+ Double_t nAcceptedTracks=0;
Float_t nAcceptedTracksStrange=0;
for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) {
AliAODTrack *track = (AliAODTrack *)fAODEvent->GetTrack(iTracks);
Double_t save= track->Pt();
Double_t d0rphiz[2],covd0[3];
- Bool_t isDca= track->PropagateToDCA(fAODEvent->GetPrimaryVertex(),fAODEvent->GetMagneticField(),9999.,d0rphiz,covd0);
+
+ AliAODTrack* clone = (AliAODTrack*) track->Clone("trk_clone"); //need clone, in order not to change track parameters
+ Bool_t isDca= clone->PropagateToDCA(fAODEvent->GetPrimaryVertex(),fAODEvent->GetMagneticField(),9999.,d0rphiz,covd0);
+ delete clone;
fPropagateDca->Fill(Int_t(isDca));
if(TMath::Abs(save - track->Pt())>1e-6) Printf("Before pt=%f, After pt=%f",save, track->Pt());
}
//________________________________________________________________________
-Int_t AliAnalysisTaskMinijet::ReadEventAODRecMcProp( vector<Float_t> &ptArray, vector<Float_t> &etaArray,
+Double_t AliAnalysisTaskMinijet::ReadEventAODRecMcProp( vector<Float_t> &ptArray, vector<Float_t> &etaArray,
vector<Float_t> &phiArray, vector<Short_t> &chargeArray,
vector<Float_t> &strangeArray,
- vector<Int_t> &nTracksTracklets, const Int_t step)
+ vector<Double_t> &nTracksTracklets, const Int_t step)
{
// gives back the number of AOD tracks and pointer to arrays with track
// properties (pt, eta, phi)
Double_t vzAOD=vtx->GetZ();
fVertexZ[step]->Fill(vzAOD);
- Int_t nAcceptedTracks=0;
+ Double_t nAcceptedTracks=0;
for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) {
AliAODTrack *track = (AliAODTrack *)fAODEvent->GetTrack(iTracks);
//________________________________________________________________________
-Int_t AliAnalysisTaskMinijet::ReadEventAODMC( vector<Float_t> &ptArray, vector<Float_t> &etaArray,
+Double_t AliAnalysisTaskMinijet::ReadEventAODMC( vector<Float_t> &ptArray, vector<Float_t> &etaArray,
vector<Float_t> &phiArray, vector<Short_t> &chargeArray,
vector<Float_t> &strangeArray,
- vector<Int_t> &nTracksTracklets, const Int_t step)
+ vector<Double_t> &nTracksTracklets, const Int_t step)
{
// gives back the number of AOD MC particles and pointer to arrays with particle
// properties (pt, eta, phi)
// Track loop: chek how many particles will be accepted
//Float_t vzMC=0.;
- Int_t nChargedPrim=0;
- Int_t nAllPrim=0;
- Int_t nPseudoTracklets=0;
+ Double_t nChargedPrim=0;
+ Double_t nAllPrim=0;
+ Double_t nPseudoTracklets=0;
for (Int_t it = 0; it < ntracks; it++) {
AliAODMCParticle *track = (AliAODMCParticle*)mcArray->At(it);
if (!track) {
const vector<Float_t> &phi,
const vector<Short_t> &charge,
const vector<Float_t> &strangeWeight,
- const Int_t ntracksCharged,
+ const Double_t ntracksCharged,
const Int_t ntracklets,
const Int_t nAll,
const Int_t step)
Printf("Analysis Step=%d", step);
if(fDebug>2){
Printf("nAll=%d",nAll);
- Printf("nCharged=%d",ntracksCharged);
+ Printf("nCharged=%f",ntracksCharged);
for (Int_t i = 0; i < nAll; i++) {
Printf("pt[%d]=%f",i,pt[i]);
}
if(ntracksCharged<-1 || ntracksCharged>1500) AliInfo("particles out of range ncharge");
if(TMath::Abs(dEta)>2*fEtaCut) {
AliInfo("particles out of range dEta");
- AliInfo("eta1=%f, eta2=%f", etaOthers, etaEventAxis);
- AliInfo("step=%d",step);
+ AliInfo(Form("eta1=%f, eta2=%f", etaOthers, etaEventAxis));
+ AliInfo(Form("step=%d",step));
}
if(dPhi<-0.5*TMath::Pi() || dPhi>1.5*TMath::Pi()){
- AliInfo("particles out of range dPhi");
- AliInfo("phi1=%f, phi2=%f", phiOthers, phiEventAxis);
+ AliInfo(Form("particles out of range dPhi"));
+ AliInfo(Form("phi1=%f, phi2=%f", phiOthers, phiEventAxis));
}
Bool_t isLikeSign = CheckLikeSign(chargeEventAxis, chargeOthers);