if (!that.fAliESDtrackCuts) delete fAliESDtrackCuts; fAliESDtrackCuts=NULL;
if ( that.fMuonTrackCuts && fMuonTrackCuts) *fMuonTrackCuts = *(that.fMuonTrackCuts); // XZhang 20120604
- if ( that.fMuonTrackCuts && !fMuonTrackCuts) fMuonTrackCuts = new AliMuonTrackCuts(*(fMuonTrackCuts)); // XZhang 20120604
+ if ( that.fMuonTrackCuts && !fMuonTrackCuts) fMuonTrackCuts = new AliMuonTrackCuts(*(that.fMuonTrackCuts)); // XZhang 20120604
if (!that.fMuonTrackCuts) delete fMuonTrackCuts; fMuonTrackCuts = NULL; // XZhang 20120604
if (!that.fV0gainEqualization) delete fV0gainEqualization; fV0gainEqualization = NULL;
-
//these guys we don't need to copy, just reinit
if (that.fQA) {fQA->Delete(); delete fQA; fQA=NULL; DefineHistograms();}
fCutMC=that.fCutMC;
fApplyRecentering = that.fApplyRecentering;
fV0gainEqualizationPerRing = that.fV0gainEqualizationPerRing;
+#if ROOT_VERSION_CODE < ROOT_VERSION(5,99,0)
if (that.fV0gainEqualization) fV0gainEqualization = new TH1(*(that.fV0gainEqualization));
-
+#else
+ //PH Lets try Clone, however the result might be wrong
+ if (that.fV0gainEqualization) fV0gainEqualization = (TH1*)that.fV0gainEqualization->Clone();
+#endif
for(Int_t i(0); i < 4; i++) { // no use to copy these guys since they're only initialized on worked node
fV0Apol[i] = that.fV0Apol[i];
fV0Cpol[i] = that.fV0Cpol[i];
//-----------------------------------------------------------------------
AliFlowTrackCuts* AliFlowTrackCuts::GetStandardVZEROOnlyTrackCuts()
+{
+ //returns the lhc10h vzero track cuts, this function
+ //is left here for backward compatibility
+ //if a run is recognized as 11h, the calibration method will
+ //switch to 11h calbiration, which means that the cut
+ //object is updated but not replaced.
+ //calibratin is only available for PbPb runs
+ return GetStandardVZEROOnlyTrackCuts2010();
+}
+//-----------------------------------------------------------------------
+AliFlowTrackCuts* AliFlowTrackCuts::GetStandardVZEROOnlyTrackCuts2010()
{
//get standard V0 cuts
- AliFlowTrackCuts* cuts = new AliFlowTrackCuts("standard vzero flow cuts");
+ AliFlowTrackCuts* cuts = new AliFlowTrackCuts("standard vzero flow cuts 2010");
cuts->SetParamType(kV0);
cuts->SetEtaRange( -10, +10 );
cuts->SetPhiMin( 0 );
cuts->SetPhiMax( TMath::TwoPi() );
// options for the reweighting
cuts->SetV0gainEqualizationPerRing(kFALSE);
- cuts->SetApplyRecentering(kFALSE);
+ cuts->SetApplyRecentering(kTRUE);
// to exclude a ring , do e.g.
-// cuts->SetUseVZERORing(7, kFALSE);
+ // cuts->SetUseVZERORing(7, kFALSE);
+ return cuts;
+}
+//-----------------------------------------------------------------------
+AliFlowTrackCuts* AliFlowTrackCuts::GetStandardVZEROOnlyTrackCuts2011()
+{
+ //get standard V0 cuts for 2011 data
+ //in this case, the vzero segments will be weighted by
+ //VZEROEqMultiplicity,
+ //if recentering is enableded, the sub-q vectors
+ //will be taken from the event header, so make sure to run
+ //the VZERO event plane selection task before this task !
+ //recentering replaces the already evaluated q-vectors, so
+ //when chosen, additional settings (e.g. excluding rings)
+ //have no effect. recentering is true by default
+ //
+ //NOTE user is responsible for running the vzero event plane
+ //selection task in advance, e.g. add to your launcher macro
+ //
+ // gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskVZEROEPSelection.C");
+ // AddTaskVZEROEPSelection();
+ //
+ AliFlowTrackCuts* cuts = new AliFlowTrackCuts("standard vzero flow cuts 2011");
+ cuts->SetParamType(kV0);
+ cuts->SetEtaRange( -10, +10 );
+ cuts->SetPhiMin( 0 );
+ cuts->SetPhiMax( TMath::TwoPi() );
+ cuts->SetApplyRecentering(kTRUE);
return cuts;
}
-
//-----------------------------------------------------------------------
AliFlowTrackCuts* AliFlowTrackCuts::GetStandardGlobalTrackCuts2010()
{
// 10102013 weighting vzero tiles - rbertens@cern.ch
if(!fV0gainEqualization) {
// if for some reason the equalization is not initialized (e.g. 2011 data)
- if(id<32) { // v0c side
+ // the fV0xpol[] weights are used to enable or disable vzero rings
+ if(id<32) { // v0c side
fTrackEta = -3.45+0.5*(id/8);
- fTrackWeight = fEvent->GetVZEROEqMultiplicity(id);
+ if(id < 8) fTrackWeight = fEvent->GetVZEROEqMultiplicity(id)*fV0Cpol[0];
+ else if (id < 16 ) fTrackWeight = fEvent->GetVZEROEqMultiplicity(id)*fV0Cpol[1];
+ else if (id < 24 ) fTrackWeight = fEvent->GetVZEROEqMultiplicity(id)*fV0Cpol[2];
+ else if (id < 32 ) fTrackWeight = fEvent->GetVZEROEqMultiplicity(id)*fV0Cpol[3];
} else { // v0a side
fTrackEta = +4.8-0.6*((id/8)-4);
- fTrackWeight = fEvent->GetVZEROEqMultiplicity(id);
+ if( id < 40) fTrackWeight = fEvent->GetVZEROEqMultiplicity(id)*fV0Apol[0];
+ else if ( id < 48 ) fTrackWeight = fEvent->GetVZEROEqMultiplicity(id)*fV0Apol[1];
+ else if ( id < 56 ) fTrackWeight = fEvent->GetVZEROEqMultiplicity(id)*fV0Apol[2];
+ else if ( id < 64 ) fTrackWeight = fEvent->GetVZEROEqMultiplicity(id)*fV0Apol[3];
}
} else { // the equalization is initialized
// note that disabled rings have already been excluded on calibration level in
fTrackEta = +4.8-0.6*((id/8)-4);
if( id < 40) fTrackWeight = fEvent->GetVZEROData()->GetMultiplicity(id)*fV0Apol[0]/fV0gainEqualization->GetBinContent(1+id);
else if ( id < 48 ) fTrackWeight = fEvent->GetVZEROData()->GetMultiplicity(id)*fV0Apol[1]/fV0gainEqualization->GetBinContent(1+id);
- else if ( id < 56) fTrackWeight = fEvent->GetVZEROData()->GetMultiplicity(id)*fV0Apol[2]/fV0gainEqualization->GetBinContent(1+id);
+ else if ( id < 56 ) fTrackWeight = fEvent->GetVZEROData()->GetMultiplicity(id)*fV0Apol[2]/fV0gainEqualization->GetBinContent(1+id);
else if ( id < 64 ) fTrackWeight = fEvent->GetVZEROData()->GetMultiplicity(id)*fV0Apol[3]/fV0gainEqualization->GetBinContent(1+id);
}
// printf ( " tile %i and weight %.2f \n", id, fTrackWeight);
}
- if (fLinearizeVZEROresponse)
+ if (fLinearizeVZEROresponse && id < 64)
{
//this is only needed in pass1 of LHC10h
Float_t multV0[fgkNumberOfV0tracks];