@@ -93,6 +93,7 @@ struct epvector {
9393 Configurable<float > cfgCutDCAz{" cfgCutDCAz" , 2 .0f , " DCAz range for tracks" };
9494 Configurable<int > cfgITScluster{" cfgITScluster" , 4 , " Number of ITS cluster" };
9595 // Configurable<int> cfgTPCcluster{"cfgTPCcluster", 70, "Number of TPC cluster"};
96+ Configurable<float > cfgHarmonic{" cfgHarmonic" , 2 , " Harmonic for event plane calculation" };
9697 Configurable<bool > useGainCallib{" useGainCallib" , true , " use gain calibration" };
9798 Configurable<bool > useRecentere{" useRecentere" , true , " use Recentering" };
9899 Configurable<bool > useShift{" useShift" , false , " use Shift" };
@@ -228,26 +229,28 @@ struct epvector {
228229 return TMath::ATan2 (chPos.Y () + offsetY, chPos.X () + offsetX);
229230 }
230231
231- double GetPhiInRange (double phi)
232+ double GetPhiInRange (double phi, double harmonic = 2 )
232233 {
233234 double result = phi;
235+ double period = 2 . * TMath::Pi () / harmonic;
234236 while (result < 0 ) {
235- result = result + 2 . * TMath::Pi () / 2 ;
237+ result = result + period ;
236238 }
237- while (result > 2 . * TMath::Pi () / 2 ) {
238- result = result - 2 . * TMath::Pi () / 2 ;
239+ while (result > period ) {
240+ result = result - period ;
239241 }
240242 return result;
241243 }
242244
243- double GetDeltaPsiSubInRange (double psi1, double psi2)
245+ double GetDeltaPsiSubInRange (double psi1, double psi2, double harmonic = 2 )
244246 {
245247 double delta = psi1 - psi2;
246- if (TMath::Abs (delta) > TMath::Pi () / 2 ) {
248+ double period = TMath::Pi () / harmonic;
249+ if (TMath::Abs (delta) > period) {
247250 if (delta > 0 .)
248- delta -= 2 . * TMath::Pi () / 2 ;
251+ delta -= 2 . * period ;
249252 else
250- delta += 2 . * TMath::Pi () / 2 ;
253+ delta += 2 . * period ;
251254 }
252255 return delta;
253256 }
@@ -320,36 +323,35 @@ struct epvector {
320323 float ampl = gainequal * ft0.amplitudeA ()[iChA];
321324 histos.fill (HIST (" FT0Amp" ), chanelid, ampl);
322325 auto phiA = GetPhiFT0 (chanelid, offsetFT0Ax, offsetFT0Ay);
323- qxFT0A = qxFT0A + ampl * TMath::Cos (2.0 * phiA);
324- qyFT0A = qyFT0A + ampl * TMath::Sin (2.0 * phiA);
326+ qxFT0A = qxFT0A + ampl * TMath::Cos (cfgHarmonic. value * phiA);
327+ qyFT0A = qyFT0A + ampl * TMath::Sin (cfgHarmonic. value * phiA);
325328 }
326329 for (std::size_t iChC = 0 ; iChC < ft0.channelC ().size (); iChC++) {
327330 auto chanelid = ft0.channelC ()[iChC] + 96 ;
328- // printf("Offset for FT0A: x = %d y = %d\n", chanelid, chanelid-96);
329331 auto gainequal = 1.0 ;
330332 if (useGainCallib) {
331333 gainequal = 1 / gainprofile->GetBinContent (gainprofile->FindBin (chanelid));
332334 }
333335 float ampl = gainequal * ft0.amplitudeC ()[iChC];
334336 histos.fill (HIST (" FT0Amp" ), chanelid, ampl);
335337 auto phiC = GetPhiFT0 (chanelid, offsetFT0Cx, offsetFT0Cy);
336- qxFT0C = qxFT0C + ampl * TMath::Cos (2.0 * phiC);
337- qyFT0C = qyFT0C + ampl * TMath::Sin (2.0 * phiC);
338+ qxFT0C = qxFT0C + ampl * TMath::Cos (cfgHarmonic. value * phiC);
339+ qyFT0C = qyFT0C + ampl * TMath::Sin (cfgHarmonic. value * phiC);
338340 }
339341
340342 for (auto & trk : tracks) {
341343 if (!selectionTrack (trk) || TMath::Abs (trk.eta ()) > 0.8 || trk.pt () > cfgCutPTMax || TMath::Abs (trk.eta ()) < cfgMinEta) {
342344 continue ;
343345 }
344- qxTPC = qxTPC + trk.pt () * TMath::Cos (2.0 * trk.phi ());
345- qyTPC = qyTPC + trk.pt () * TMath::Sin (2.0 * trk.phi ());
346+ qxTPC = qxTPC + trk.pt () * TMath::Cos (cfgHarmonic. value * trk.phi ());
347+ qyTPC = qyTPC + trk.pt () * TMath::Sin (cfgHarmonic. value * trk.phi ());
346348 if (trk.eta () < 0.0 ) {
347- qxTPCL = qxTPCL + trk.pt () * TMath::Cos (2.0 * trk.phi ());
348- qyTPCL = qyTPCL + trk.pt () * TMath::Sin (2.0 * trk.phi ());
349+ qxTPCL = qxTPCL + trk.pt () * TMath::Cos (cfgHarmonic. value * trk.phi ());
350+ qyTPCL = qyTPCL + trk.pt () * TMath::Sin (cfgHarmonic. value * trk.phi ());
349351 }
350352 if (trk.eta () > 0.0 ) {
351- qxTPCR = qxTPCR + trk.pt () * TMath::Cos (2.0 * trk.phi ());
352- qyTPCR = qyTPCR + trk.pt () * TMath::Sin (2.0 * trk.phi ());
353+ qxTPCR = qxTPCR + trk.pt () * TMath::Cos (cfgHarmonic. value * trk.phi ());
354+ qyTPCR = qyTPCR + trk.pt () * TMath::Sin (cfgHarmonic. value * trk.phi ());
353355 }
354356 }
355357 if (useRecentere && (currentRunNumber != lastRunNumber)) {
@@ -367,11 +369,11 @@ struct epvector {
367369 qxTPCR = (qxTPCR - hrecentere->GetBinContent (hrecentere->FindBin (centrality, 8.5 ))) / hrecentere->GetBinError (hrecentere->FindBin (centrality, 8.5 ));
368370 qyTPCR = (qyTPCR - hrecentere->GetBinContent (hrecentere->FindBin (centrality, 9.5 ))) / hrecentere->GetBinError (hrecentere->FindBin (centrality, 9.5 ));
369371 }
370- psiFT0C = 0.5 * TMath::ATan2 (qyFT0C, qxFT0C);
371- psiFT0A = 0.5 * TMath::ATan2 (qyFT0A, qxFT0A);
372- psiTPC = 0.5 * TMath::ATan2 (qyTPC, qxTPC);
373- psiTPCL = 0.5 * TMath::ATan2 (qyTPCL, qxTPCL);
374- psiTPCR = 0.5 * TMath::ATan2 (qyTPCR, qxTPCR);
372+ psiFT0C = ( 1.0 / cfgHarmonic. value ) * TMath::ATan2 (qyFT0C, qxFT0C);
373+ psiFT0A = ( 1.0 / cfgHarmonic. value ) * TMath::ATan2 (qyFT0A, qxFT0A);
374+ psiTPC = ( 1.0 / cfgHarmonic. value ) * TMath::ATan2 (qyTPC, qxTPC);
375+ psiTPCL = ( 1.0 / cfgHarmonic. value ) * TMath::ATan2 (qyTPCL, qxTPCL);
376+ psiTPCR = ( 1.0 / cfgHarmonic. value ) * TMath::ATan2 (qyTPCR, qxTPCR);
375377
376378 if (useShift && (currentRunNumber != lastRunNumber)) {
377379 shiftprofile = ccdb->getForTimeStamp <TProfile3D>(ConfShift.value , bc.timestamp ());
@@ -391,7 +393,7 @@ struct epvector {
391393 for (int ishift = 1 ; ishift <= 10 ; ishift++) {
392394 auto coeffshiftxFT0C = shiftprofile->GetBinContent (shiftprofile->FindBin (centrality, 0.5 , ishift - 0.5 ));
393395 auto coeffshiftyFT0C = shiftprofile->GetBinContent (shiftprofile->FindBin (centrality, 1.5 , ishift - 0.5 ));
394- deltapsiFT0C = deltapsiFT0C + ((1 / (1.0 * ishift)) * (-coeffshiftxFT0C * TMath::Cos (ishift * 2.0 * psiFT0C) + coeffshiftyFT0C * TMath::Sin (ishift * 2.0 * psiFT0C)));
396+ deltapsiFT0C = deltapsiFT0C + ((1 / (1.0 * ishift)) * (-coeffshiftxFT0C * TMath::Cos (ishift * cfgHarmonic. value * psiFT0C) + coeffshiftyFT0C * TMath::Sin (ishift * cfgHarmonic. value * psiFT0C)));
395397 if (useShift2) {
396398 auto coeffshiftxFT0A = shiftprofile2->GetBinContent (shiftprofile2->FindBin (centrality, 0.5 , ishift - 0.5 ));
397399 auto coeffshiftyFT0A = shiftprofile2->GetBinContent (shiftprofile2->FindBin (centrality, 1.5 , ishift - 0.5 ));
@@ -404,10 +406,10 @@ struct epvector {
404406
405407 auto coeffshiftxTPCR = shiftprofile5->GetBinContent (shiftprofile5->FindBin (centrality, 0.5 , ishift - 0.5 ));
406408 auto coeffshiftyTPCR = shiftprofile5->GetBinContent (shiftprofile5->FindBin (centrality, 1.5 , ishift - 0.5 ));
407- deltapsiFT0A = deltapsiFT0A + ((1 / (1.0 * ishift)) * (-coeffshiftxFT0A * TMath::Cos (ishift * 2.0 * psiFT0A) + coeffshiftyFT0A * TMath::Sin (ishift * 2.0 * psiFT0A)));
408- deltapsiTPC = deltapsiTPC + ((1 / (1.0 * ishift)) * (-coeffshiftxTPC * TMath::Cos (ishift * 2.0 * psiTPC) + coeffshiftyTPC * TMath::Sin (ishift * 2.0 * psiTPC)));
409- deltapsiTPCL = deltapsiTPCL + ((1 / (1.0 * ishift)) * (-coeffshiftxTPCL * TMath::Cos (ishift * 2.0 * psiTPCL) + coeffshiftyTPCL * TMath::Sin (ishift * 2.0 * psiTPCL)));
410- deltapsiTPCR = deltapsiTPCR + ((1 / (1.0 * ishift)) * (-coeffshiftxTPCR * TMath::Cos (ishift * 2.0 * psiTPCR) + coeffshiftyTPCR * TMath::Sin (ishift * 2.0 * psiTPCR)));
409+ deltapsiFT0A = deltapsiFT0A + ((1 / (1.0 * ishift)) * (-coeffshiftxFT0A * TMath::Cos (ishift * cfgHarmonic. value * psiFT0A) + coeffshiftyFT0A * TMath::Sin (ishift * cfgHarmonic. value * psiFT0A)));
410+ deltapsiTPC = deltapsiTPC + ((1 / (1.0 * ishift)) * (-coeffshiftxTPC * TMath::Cos (ishift * cfgHarmonic. value * psiTPC) + coeffshiftyTPC * TMath::Sin (ishift * cfgHarmonic. value * psiTPC)));
411+ deltapsiTPCL = deltapsiTPCL + ((1 / (1.0 * ishift)) * (-coeffshiftxTPCL * TMath::Cos (ishift * cfgHarmonic. value * psiTPCL) + coeffshiftyTPCL * TMath::Sin (ishift * cfgHarmonic. value * psiTPCL)));
412+ deltapsiTPCR = deltapsiTPCR + ((1 / (1.0 * ishift)) * (-coeffshiftxTPCR * TMath::Cos (ishift * cfgHarmonic. value * psiTPCR) + coeffshiftyTPCR * TMath::Sin (ishift * cfgHarmonic. value * psiTPCR)));
411413 }
412414 }
413415 psiFT0C = psiFT0C + deltapsiFT0C;
@@ -432,12 +434,12 @@ struct epvector {
432434 histos.fill (HIST (" QyTPCR" ), centrality, qyTPCR);
433435 histos.fill (HIST (" PsiTPCR" ), centrality, psiTPCR);
434436
435- histos.fill (HIST (" ResFT0CFT0A" ), centrality, TMath::Cos (2.0 * (psiFT0C - psiFT0A)), occupancy);
436- histos.fill (HIST (" ResFT0CTPC" ), centrality, TMath::Cos (2.0 * (psiFT0C - psiTPC)), occupancy);
437- histos.fill (HIST (" ResFT0ATPC" ), centrality, TMath::Cos (2.0 * (psiFT0A - psiTPC)), occupancy);
438- histos.fill (HIST (" ResFT0CTPCL" ), centrality, TMath::Cos (2.0 * (psiFT0C - psiTPCL)), occupancy);
439- histos.fill (HIST (" ResFT0CTPCR" ), centrality, TMath::Cos (2.0 * (psiFT0C - psiTPCR)), occupancy);
440- histos.fill (HIST (" ResTPCRTPCL" ), centrality, TMath::Cos (2.0 * (psiTPCR - psiTPCL)), occupancy);
437+ histos.fill (HIST (" ResFT0CFT0A" ), centrality, TMath::Cos (cfgHarmonic. value * (psiFT0C - psiFT0A)), occupancy);
438+ histos.fill (HIST (" ResFT0CTPC" ), centrality, TMath::Cos (cfgHarmonic. value * (psiFT0C - psiTPC)), occupancy);
439+ histos.fill (HIST (" ResFT0ATPC" ), centrality, TMath::Cos (cfgHarmonic. value * (psiFT0A - psiTPC)), occupancy);
440+ histos.fill (HIST (" ResFT0CTPCL" ), centrality, TMath::Cos (cfgHarmonic. value * (psiFT0C - psiTPCL)), occupancy);
441+ histos.fill (HIST (" ResFT0CTPCR" ), centrality, TMath::Cos (cfgHarmonic. value * (psiFT0C - psiTPCR)), occupancy);
442+ histos.fill (HIST (" ResTPCRTPCL" ), centrality, TMath::Cos (cfgHarmonic. value * (psiTPCR - psiTPCL)), occupancy);
441443
442444 double qFT0Cmag = TMath::Sqrt (qxFT0C * qxFT0C + qyFT0C * qyFT0C);
443445 double qFT0Amag = TMath::Sqrt (qxFT0A * qxFT0A + qyFT0A * qyFT0A);
@@ -451,28 +453,28 @@ struct epvector {
451453 histos.fill (HIST (" QFT0C" ), centrality, qFT0Cmag, occupancy);
452454 histos.fill (HIST (" QFT0A" ), centrality, qFT0Amag, occupancy);
453455
454- histos.fill (HIST (" ResFT0CFT0ASP" ), centrality, qFT0Cmag * qFT0Amag * TMath::Cos (2.0 * (psiFT0C - psiFT0A)), occupancy);
455- histos.fill (HIST (" ResFT0CTPCSP" ), centrality, qFT0Cmag * qTPCmag * TMath::Cos (2.0 * (psiFT0C - psiTPC)), occupancy);
456- histos.fill (HIST (" ResFT0ATPCSP" ), centrality, qFT0Amag * qTPCmag * TMath::Cos (2.0 * (psiFT0A - psiTPC)), occupancy);
457- histos.fill (HIST (" ResFT0CTPCLSP" ), centrality, qFT0Cmag * qTPCLmag * TMath::Cos (2.0 * (psiFT0C - psiTPCL)), occupancy);
458- histos.fill (HIST (" ResFT0CTPCRSP" ), centrality, qFT0Cmag * qTPCRmag * TMath::Cos (2.0 * (psiFT0C - psiTPCR)), occupancy);
459- histos.fill (HIST (" ResTPCRTPCLSP" ), centrality, qTPCRmag * qTPCLmag * TMath::Cos (2.0 * (psiTPCR - psiTPCL)), occupancy);
456+ histos.fill (HIST (" ResFT0CFT0ASP" ), centrality, qFT0Cmag * qFT0Amag * TMath::Cos (cfgHarmonic. value * (psiFT0C - psiFT0A)), occupancy);
457+ histos.fill (HIST (" ResFT0CTPCSP" ), centrality, qFT0Cmag * qTPCmag * TMath::Cos (cfgHarmonic. value * (psiFT0C - psiTPC)), occupancy);
458+ histos.fill (HIST (" ResFT0ATPCSP" ), centrality, qFT0Amag * qTPCmag * TMath::Cos (cfgHarmonic. value * (psiFT0A - psiTPC)), occupancy);
459+ histos.fill (HIST (" ResFT0CTPCLSP" ), centrality, qFT0Cmag * qTPCLmag * TMath::Cos (cfgHarmonic. value * (psiFT0C - psiTPCL)), occupancy);
460+ histos.fill (HIST (" ResFT0CTPCRSP" ), centrality, qFT0Cmag * qTPCRmag * TMath::Cos (cfgHarmonic. value * (psiFT0C - psiTPCR)), occupancy);
461+ histos.fill (HIST (" ResTPCRTPCLSP" ), centrality, qTPCRmag * qTPCLmag * TMath::Cos (cfgHarmonic. value * (psiTPCR - psiTPCL)), occupancy);
460462
461463 for (int ishift = 1 ; ishift <= 10 ; ishift++) {
462- histos.fill (HIST (" ShiftFT0C" ), centrality, 0.5 , ishift - 0.5 , TMath::Sin (ishift * 2.0 * psiFT0C));
463- histos.fill (HIST (" ShiftFT0C" ), centrality, 1.5 , ishift - 0.5 , TMath::Cos (ishift * 2.0 * psiFT0C));
464+ histos.fill (HIST (" ShiftFT0C" ), centrality, 0.5 , ishift - 0.5 , TMath::Sin (ishift * cfgHarmonic. value * psiFT0C));
465+ histos.fill (HIST (" ShiftFT0C" ), centrality, 1.5 , ishift - 0.5 , TMath::Cos (ishift * cfgHarmonic. value * psiFT0C));
464466
465- histos.fill (HIST (" ShiftFT0A" ), centrality, 0.5 , ishift - 0.5 , TMath::Sin (ishift * 2.0 * psiFT0A));
466- histos.fill (HIST (" ShiftFT0A" ), centrality, 1.5 , ishift - 0.5 , TMath::Cos (ishift * 2.0 * psiFT0A));
467+ histos.fill (HIST (" ShiftFT0A" ), centrality, 0.5 , ishift - 0.5 , TMath::Sin (ishift * cfgHarmonic. value * psiFT0A));
468+ histos.fill (HIST (" ShiftFT0A" ), centrality, 1.5 , ishift - 0.5 , TMath::Cos (ishift * cfgHarmonic. value * psiFT0A));
467469
468- histos.fill (HIST (" ShiftTPC" ), centrality, 0.5 , ishift - 0.5 , TMath::Sin (ishift * 2.0 * psiTPC));
469- histos.fill (HIST (" ShiftTPC" ), centrality, 1.5 , ishift - 0.5 , TMath::Cos (ishift * 2.0 * psiTPC));
470+ histos.fill (HIST (" ShiftTPC" ), centrality, 0.5 , ishift - 0.5 , TMath::Sin (ishift * cfgHarmonic. value * psiTPC));
471+ histos.fill (HIST (" ShiftTPC" ), centrality, 1.5 , ishift - 0.5 , TMath::Cos (ishift * cfgHarmonic. value * psiTPC));
470472
471- histos.fill (HIST (" ShiftTPCL" ), centrality, 0.5 , ishift - 0.5 , TMath::Sin (ishift * 2.0 * psiTPCL));
472- histos.fill (HIST (" ShiftTPCL" ), centrality, 1.5 , ishift - 0.5 , TMath::Cos (ishift * 2.0 * psiTPCL));
473+ histos.fill (HIST (" ShiftTPCL" ), centrality, 0.5 , ishift - 0.5 , TMath::Sin (ishift * cfgHarmonic. value * psiTPCL));
474+ histos.fill (HIST (" ShiftTPCL" ), centrality, 1.5 , ishift - 0.5 , TMath::Cos (ishift * cfgHarmonic. value * psiTPCL));
473475
474- histos.fill (HIST (" ShiftTPCR" ), centrality, 0.5 , ishift - 0.5 , TMath::Sin (ishift * 2.0 * psiTPCR));
475- histos.fill (HIST (" ShiftTPCR" ), centrality, 1.5 , ishift - 0.5 , TMath::Cos (ishift * 2.0 * psiTPCR));
476+ histos.fill (HIST (" ShiftTPCR" ), centrality, 0.5 , ishift - 0.5 , TMath::Sin (ishift * cfgHarmonic. value * psiTPCR));
477+ histos.fill (HIST (" ShiftTPCR" ), centrality, 1.5 , ishift - 0.5 , TMath::Cos (ishift * cfgHarmonic. value * psiTPCR));
476478 }
477479 lastRunNumber = currentRunNumber;
478480 }
0 commit comments