AliFlowEventSimple::AliFlowEventSimple():
fTrackCollection(NULL),
fNumberOfTracks(0),
- fEventNSelTracksIntFlow(0),
+ fEventNSelTracksRP(0),
fMCReactionPlaneAngle(0.),
fNumberOfTracksWrap(NULL),
- fEventNSelTracksIntFlowWrap(NULL),
+ fEventNSelTracksRPWrap(NULL),
fMCReactionPlaneAngleWrap(NULL)
{
cout << "AliFlowEventSimple: Default constructor to be used only by root for io" << endl;
AliFlowEventSimple::AliFlowEventSimple(Int_t aLenght):
fTrackCollection(NULL),
fNumberOfTracks(0),
- fEventNSelTracksIntFlow(0),
+ fEventNSelTracksRP(0),
fMCReactionPlaneAngle(0.),
fNumberOfTracksWrap(NULL),
- fEventNSelTracksIntFlowWrap(NULL),
+ fEventNSelTracksRPWrap(NULL),
fMCReactionPlaneAngleWrap(NULL)
{
//constructor
TObject(),
fTrackCollection(anEvent.fTrackCollection),
fNumberOfTracks(anEvent.fNumberOfTracks),
- fEventNSelTracksIntFlow(anEvent.fEventNSelTracksIntFlow),
+ fEventNSelTracksRP(anEvent.fEventNSelTracksRP),
fMCReactionPlaneAngle(anEvent.fMCReactionPlaneAngle),
fNumberOfTracksWrap(anEvent.fNumberOfTracksWrap),
- fEventNSelTracksIntFlowWrap(anEvent.fEventNSelTracksIntFlowWrap),
+ fEventNSelTracksRPWrap(anEvent.fEventNSelTracksRPWrap),
fMCReactionPlaneAngleWrap(anEvent.fMCReactionPlaneAngleWrap)
{
//copy constructor
{
*fTrackCollection = *anEvent.fTrackCollection ;
fNumberOfTracks = anEvent.fNumberOfTracks;
- fEventNSelTracksIntFlow = anEvent.fEventNSelTracksIntFlow;
+ fEventNSelTracksRP = anEvent.fEventNSelTracksRP;
fMCReactionPlaneAngle = anEvent.fMCReactionPlaneAngle;
fNumberOfTracksWrap = anEvent.fNumberOfTracksWrap;
- fEventNSelTracksIntFlowWrap = anEvent.fEventNSelTracksIntFlowWrap;
+ fEventNSelTracksRPWrap = anEvent.fEventNSelTracksRPWrap;
fMCReactionPlaneAngleWrap=anEvent.fMCReactionPlaneAngleWrap;
return *this;
//destructor
if (fTrackCollection) fTrackCollection->Delete(); delete fTrackCollection;
if (fNumberOfTracksWrap) delete fNumberOfTracksWrap;
- if (fEventNSelTracksIntFlowWrap) delete fEventNSelTracksIntFlowWrap;
+ if (fEventNSelTracksRPWrap) delete fEventNSelTracksRPWrap;
if (fMCReactionPlaneAngleWrap) delete fMCReactionPlaneAngleWrap;
}
TH1F *phiWeights = NULL;
TH1D *ptWeights = NULL;
TH1D *etaWeights = NULL;
-
- Double_t dSumOfWeightsToPower2 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 2)
- Double_t dSumOfWeightsToPower3 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 3)
- Double_t dSumOfWeightsToPower4 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 4)
- Double_t dSumOfWeightsToPower5 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 5)
- Double_t dSumOfWeightsToPower6 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 6)
- Double_t dSumOfWeightsToPower7 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 7)
- Double_t dSumOfWeightsToPower8 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 8)
-
+
if(weightsList)
{
if(usePhiWeights)
pTrack = (AliFlowTrackSimple*)TrackCollection()->At(i);
if(pTrack)
{
- if(pTrack->UseForIntegratedFlow())
+ if(pTrack->InRPSelection())
{
dPhi = pTrack->Phi();
dPt = pTrack->Pt();
// weighted multiplicity:
iUsedTracks+=wPhi*wPt*wEta;
-
- // weights raised to various powers are summed up:
- dSumOfWeightsToPower2+=pow(wPhi*wPt*wEta, 2);
- dSumOfWeightsToPower3+=pow(wPhi*wPt*wEta, 3);
- dSumOfWeightsToPower4+=pow(wPhi*wPt*wEta, 4);
- dSumOfWeightsToPower5+=pow(wPhi*wPt*wEta, 5);
- dSumOfWeightsToPower6+=pow(wPhi*wPt*wEta, 6);
- dSumOfWeightsToPower7+=pow(wPhi*wPt*wEta, 7);
- dSumOfWeightsToPower8+=pow(wPhi*wPt*wEta, 8);
-
- } // end of if (pTrack->UseForIntegratedFlow())
+
+ } // end of if (pTrack->InRPSelection())
} // end of if (pTrack)
else {cerr << "no particle!!!"<<endl;}
} // loop over particles
vQ.Set(dQX,dQY);
vQ.SetMult(iUsedTracks);
- vQ.SetSumOfWeightsToPower2(dSumOfWeightsToPower2);
- vQ.SetSumOfWeightsToPower3(dSumOfWeightsToPower3);
- vQ.SetSumOfWeightsToPower4(dSumOfWeightsToPower4);
- vQ.SetSumOfWeightsToPower5(dSumOfWeightsToPower5);
- vQ.SetSumOfWeightsToPower6(dSumOfWeightsToPower6);
- vQ.SetSumOfWeightsToPower7(dSumOfWeightsToPower7);
- vQ.SetSumOfWeightsToPower8(dSumOfWeightsToPower8);
-
+
return vQ;
}
//-----------------------------------------------------------------------
-AliFlowVector AliFlowEventSimple::GetQsub(Double_t etaMin, Double_t etaMax, Int_t n, TList *weightsList, Bool_t usePhiWeights, Bool_t usePtWeights, Bool_t useEtaWeights)
+void AliFlowEventSimple::GetQsub(AliFlowVector* Qarray, Int_t n, TList *weightsList, Bool_t usePhiWeights, Bool_t usePtWeights, Bool_t useEtaWeights)
{
- //for eta subevents
// calculate Q-vector in harmonic n without weights (default harmonic n=2)
Double_t dQX = 0.;
Double_t dQY = 0.;
- AliFlowVector vQ;
- vQ.Set(0.,0.);
-
+
Int_t iOrder = n;
Double_t iUsedTracks = 0;
Double_t dPhi = 0.;
TH1F *phiWeights = NULL;
TH1D *ptWeights = NULL;
TH1D *etaWeights = NULL;
-
- Double_t dSumOfWeightsToPower2 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 2)
- Double_t dSumOfWeightsToPower3 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 3)
- Double_t dSumOfWeightsToPower4 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 4)
- Double_t dSumOfWeightsToPower5 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 5)
- Double_t dSumOfWeightsToPower6 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 6)
- Double_t dSumOfWeightsToPower7 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 7)
- Double_t dSumOfWeightsToPower8 = 0.; // sum_{i=1}^{n} pow((wPhi*wPt*wEta)_i, 8)
-
+
if(weightsList)
{
if(usePhiWeights)
}
} // end of if(weightsList)
- // loop over tracks
- for(Int_t i=0;i<fNumberOfTracks;i++)
- {
- pTrack = (AliFlowTrackSimple*)TrackCollection()->At(i);
- if(pTrack)
- {
- if(pTrack->UseForIntegratedFlow())
+ //loop over the two subevents
+ for (Int_t s=0;s<2;s++)
{
- dPhi = pTrack->Phi();
- dPt = pTrack->Pt();
- dEta = pTrack->Eta();
- if (dEta>etaMin && dEta<etaMax) {
- // determine Phi weight: (to be improved, I should here only access it + the treatment of gaps in the if statement)
- if(phiWeights && nBinsPhi)
- {
- wPhi = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*nBinsPhi/TMath::TwoPi())));
- }
- // determine v'(pt) weight:
- if(ptWeights && dBinWidthPt)
- {
- wPt=ptWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-dPtMin)/dBinWidthPt)));
- }
- // determine v'(eta) weight:
- if(etaWeights && dBinWidthEta)
- {
- wEta=etaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-dEtaMin)/dBinWidthEta)));
- }
-
- // building up the weighted Q-vector:
- dQX += wPhi*wPt*wEta*TMath::Cos(iOrder*dPhi);
- dQY += wPhi*wPt*wEta*TMath::Sin(iOrder*dPhi);
-
- // weighted multiplicity:
- iUsedTracks+=wPhi*wPt*wEta;
-
- // weights raised to various powers are summed up:
- dSumOfWeightsToPower2+=pow(wPhi*wPt*wEta, 2);
- dSumOfWeightsToPower3+=pow(wPhi*wPt*wEta, 3);
- dSumOfWeightsToPower4+=pow(wPhi*wPt*wEta, 4);
- dSumOfWeightsToPower5+=pow(wPhi*wPt*wEta, 5);
- dSumOfWeightsToPower6+=pow(wPhi*wPt*wEta, 6);
- dSumOfWeightsToPower7+=pow(wPhi*wPt*wEta, 7);
- dSumOfWeightsToPower8+=pow(wPhi*wPt*wEta, 8);
- } // end of if dEta in eta range
- } // end of if (pTrack->UseForIntegratedFlow())
- } // end of if (pTrack)
- else {cerr << "no particle!!!"<<endl;}
- } // loop over particles
-
- vQ.Set(dQX,dQY);
- vQ.SetMult(iUsedTracks);
- vQ.SetSumOfWeightsToPower2(dSumOfWeightsToPower2);
- vQ.SetSumOfWeightsToPower3(dSumOfWeightsToPower3);
- vQ.SetSumOfWeightsToPower4(dSumOfWeightsToPower4);
- vQ.SetSumOfWeightsToPower5(dSumOfWeightsToPower5);
- vQ.SetSumOfWeightsToPower6(dSumOfWeightsToPower6);
- vQ.SetSumOfWeightsToPower7(dSumOfWeightsToPower7);
- vQ.SetSumOfWeightsToPower8(dSumOfWeightsToPower8);
-
- return vQ;
+ // loop over tracks
+ for(Int_t i=0;i<fNumberOfTracks;i++)
+ {
+ pTrack = (AliFlowTrackSimple*)TrackCollection()->At(i);
+ if(pTrack)
+ {
+ if(pTrack->InRPSelection())
+ {
+ if (pTrack->InSubevent(s)) {
+ dPhi = pTrack->Phi();
+ dPt = pTrack->Pt();
+ dEta = pTrack->Eta();
+
+ // determine Phi weight: (to be improved, I should here only access it + the treatment of gaps in the if statement)
+ if(phiWeights && nBinsPhi)
+ {
+ wPhi = phiWeights->GetBinContent(1+(Int_t)(TMath::Floor(dPhi*nBinsPhi/TMath::TwoPi())));
+ }
+ // determine v'(pt) weight:
+ if(ptWeights && dBinWidthPt)
+ {
+ wPt=ptWeights->GetBinContent(1+(Int_t)(TMath::Floor((dPt-dPtMin)/dBinWidthPt)));
+ }
+ // determine v'(eta) weight:
+ if(etaWeights && dBinWidthEta)
+ {
+ wEta=etaWeights->GetBinContent(1+(Int_t)(TMath::Floor((dEta-dEtaMin)/dBinWidthEta)));
+ }
+
+ // building up the weighted Q-vector:
+ dQX += wPhi*wPt*wEta*TMath::Cos(iOrder*dPhi);
+ dQY += wPhi*wPt*wEta*TMath::Sin(iOrder*dPhi);
+
+ // weighted multiplicity:
+ iUsedTracks+=wPhi*wPt*wEta;
+
+ } // end of subevent
+ } // end of if (pTrack->InRPSelection())
+ } // end of if (pTrack)
+ else {cerr << "no particle!!!"<<endl;}
+ } // loop over particles
+ Qarray[s].Set(dQX,dQY);
+ Qarray[s].SetMult(iUsedTracks);
+ //reset
+ iUsedTracks = 0;
+ dQX = 0.;
+ dQY = 0.;
+ }
+
+ //return vQ;
}
// ===============================================
// printf( "TH1.Print Name = %s, Entries= %d, Total sum= %g\n",GetName(),Int_t(fEntries),GetSumOfWeights());
printf( "Class.Print Name = %s, Total number of tracks= %d, Number of selected tracks= %d, MC EventPlaneAngle= %f",
- GetName(),fNumberOfTracks, fEventNSelTracksIntFlow, fMCReactionPlaneAngle );
+ GetName(),fNumberOfTracks, fEventNSelTracksRP, fMCReactionPlaneAngle );
if (fTrackCollection) {
fTrackCollection->Print(option);
fNumberOfTracksWrap = new TParameter<int>("fNumberOfTracks", fNumberOfTracks);
b->Add(fNumberOfTracksWrap);
}
- if (!fEventNSelTracksIntFlowWrap) {
- fEventNSelTracksIntFlowWrap = new TParameter<int>("fEventNSelTracksIntFlow", fEventNSelTracksIntFlow);
- b->Add(fEventNSelTracksIntFlowWrap);
+ if (!fEventNSelTracksRPWrap) {
+ fEventNSelTracksRPWrap = new TParameter<int>("fEventNSelTracksRP", fEventNSelTracksRP);
+ b->Add(fEventNSelTracksRPWrap);
}
if (!fMCReactionPlaneAngleWrap) {
fMCReactionPlaneAngleWrap = new TParameter<double>(" fMCReactionPlaneAngle", fMCReactionPlaneAngle);