+
+
+//_________________________________________________________________
+void AliAnalysisTaskSEDplus::LSAnalysis(TClonesArray *arrayOppositeSign,TClonesArray *arrayLikeSign,AliAODEvent *aod,AliAODVertex *vtx1, Int_t nDplusOS){
+
+/*
+ * Fill the Like Sign histograms
+ */
+
+
+
+
+ //count pos/neg tracks
+ Int_t nPosTrks=0,nNegTrks=0;
+ //counter for particles passing single particle cuts
+ Int_t nspcplus=0;
+ Int_t nspcminus=0;
+
+ for(Int_t it=0;it<aod->GetNumberOfTracks();it++) {
+ AliAODTrack *track = aod->GetTrack(it);
+ if(track->Charge()>0){
+ nPosTrks++;
+ if(track->Pt()>=0.4){
+ nspcplus++;
+ }
+ }else{
+ nNegTrks++;
+ if(track->Pt()>=0.4){
+ nspcminus++;
+ }
+ }
+ }
+
+ Int_t nOStriplets = arrayOppositeSign->GetEntriesFast();
+
+ Int_t nDplusLS=0;
+ Int_t nLikeSign = arrayLikeSign->GetEntriesFast();
+
+ for(Int_t iLikeSign = 0; iLikeSign < nLikeSign; iLikeSign++) {
+ AliAODRecoDecayHF3Prong *d = (AliAODRecoDecayHF3Prong*)arrayLikeSign->UncheckedAt(iLikeSign);
+ Bool_t unsetvtx=kFALSE;
+ if(!d->GetOwnPrimaryVtx()) {
+ d->SetOwnPrimaryVtx(vtx1); // needed to compute all variables
+ unsetvtx=kTRUE;
+ }
+ if(d->SelectDplus(fVHF->GetDplusCuts()))nDplusLS++;
+ if(unsetvtx) d->UnsetOwnPrimaryVtx();
+ }
+
+ Float_t wei2=0;
+ if(nLikeSign!=0)wei2 = (Float_t)nOStriplets/(Float_t)nLikeSign;
+ Float_t wei3=0;
+ if(nDplusLS!=0)wei3 = (Float_t)nDplusOS/(Float_t)nDplusLS;
+
+ // loop over sign candidates
+ for(Int_t iLikeSign = 0; iLikeSign < nLikeSign; iLikeSign++) {
+ AliAODRecoDecayHF3Prong *d = (AliAODRecoDecayHF3Prong*)arrayLikeSign->UncheckedAt(iLikeSign);
+ Bool_t unsetvtx=kFALSE;
+ if(!d->GetOwnPrimaryVtx()) {
+ d->SetOwnPrimaryVtx(vtx1); // needed to compute all variables
+ unsetvtx=kTRUE;
+ }
+
+ if(d->SelectDplus(fVHF->GetDplusCuts())){
+ Int_t sign= d->GetCharge();
+ Float_t wei1=1;
+ Float_t wei4=1;
+ if(sign>0&&nPosTrks>2&&nspcplus>2){//wei* should be automatically protected, since to get a triplet there must be at least 3 good tracks in the event
+ wei1=3.*(Float_t)nNegTrks/((Float_t)nPosTrks-2.);
+ wei4=3.*(Float_t)nspcminus/((Float_t)nspcplus-2.);
+ }
+ if(sign<0&&nNegTrks>2&&nspcminus>2){
+ wei1=3.*(Float_t)nPosTrks/((Float_t)nNegTrks-2.);
+ wei4=3.*(Float_t)nspcplus/((Float_t)nspcminus-2.);
+ }
+ Double_t invMass=d->InvMassDplus();
+ fHistLS->Fill(invMass,wei1);
+ fHistLSnoweight->Fill(invMass);
+ fHistLStrip->Fill(invMass,wei2);
+ fHistLStripcut->Fill(invMass,wei3);
+ fHistLSsinglecut->Fill(invMass,wei4);
+ }
+ if(unsetvtx) d->UnsetOwnPrimaryVtx();
+ }
+
+ //printf("------------ N. of positive tracks in Event ----- %d \n", nPosTrks);
+ //printf("------------ N. of negative tracks in Event ----- %d \n", nNegTrks);
+
+ // printf("LS analysis...done\n");
+
+}
+
+//_________________________________________________________________
+
+